面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块

  • 微信小程序前端
    微信小程序前端易错点收集
    查看
  • css/less/sass样式控制
    在开发过程中的一些样式控制bug规避
    查看
  • tp5开发小程序
    tp5开发小程序时错误积累
    查看
  • PHP错题集
    PHP在实际开发过程中遇到的问题
    查看
  • MySql数据库
    使用MySql在实际开发中遇到的错误总结
    查看
  • TP5错题集
    积累tp5框架在实际开发过程中遇到的问题
    查看
  • uni-app爬坑
    主要用于uni-app项目中遇到的一些问题
    查看
  • Vue.js易错收集
    vue.js项目常见错误收集整理
    查看
  • uni-app开发微信小程序
    uni-app开发微信小程序的一些爬坑积累
    查看
  • Linux
    Linux在部署、开发、运维时遇见的错误积累
    查看
  • 安全设计
    常见安全设计
    查看
  • Redis
    项目中使用redis的相关错误积累
    查看
  • 前端特效
    前端特效相关错题集
    查看
more

最新博文

  • 命名空间问题(namespace和use)

    thinkphp

    首先确定一个逻辑:命名空间的使用,是便于不同文件夹下同名类的调用不混淆。namespace和use的写法不是绝对路径,thinkphp5内核系统和有些第三方类库都做了命名空间的别名修改,即用别名来代替绝对路径。

    命名空间主要服务于类的编写和使用。所以主要是两方面:安顿类库(在编写的类中使用正确的namespace)、使用类库(在类库的使用文件中正确使用use,并且正确地实例化类)。

     

    一.namespace和use强调的不同

    类的namespace和类使用者的use不是一致的,namespce是类文件class.php(或php)所在的文件夹路径,不包含自己;use则要包含类文件class.php(或php)。

    1.namespace强调本类所在文件夹路径

    2.use强调类的地址,有点像src,其主要是为了懒加载

     

    例如:A控制器要使用B类(名称是Keep.php)

    B的路径是 extend/test/chang/Keep.php

     

    则B中的写法是

    namespace   test/chang;

    class Keep{

    }

    A中的写法是

    use  test/chang/Keep

    二.常用namespace根名

    系统内置的几个根命名空间(类库包)如下:

    think          系统核心类库                                                 thinkphp/library/think

    think          vendor内置第三方类库                                  vendor/topthink

    traits          系统Trait类库                                                thinkphp/library/traits

    app            应用类库                                                       application

    类库名        vendor中composer下来的第三方类库           vendor

    类库名        extend下非composer的第三方类库               extend

    类库名        手动注册命名空间的第三方类库                      任意位置

     

     

    三.namespace和use不是绝对路径----定义命名空间别名

    例如:绝对路径是app/index/model/User

    完全写法是 namespace app\index\model 引用则是 use app\index\model\User

    然而可以通过定义命名空间别名,将其改为model\User。

    做法如下:

    在应用公共文件中注册命名空间别名

      \think\Loader::addNamespaceAlias('model','app\index\model');

     

    四.类的分类

    类主要分为:

    1.thinkphp内置类;

    2.第三方类(composer荡下来的);

    3.第三方类(extend下的)

    4.自定义类(任意位置)

    我们要注意的地方主要是extend下的第三方类和自定义的类

     

    五.自动注册和手动注册

    自动注册和手动注册,就主要是针对extend下的类和自定义类。其强调怎样正确namespace、use,已经正确实例化对象。

    1.自动注册(针对extend目录下的类)

    namespace和use都是类库绝对路径(不包含extend自己),实例化也是要在new 后面加绝对路径

    (1)使用use引用情况下实例化:实例化要加绝对路径+new后不加第一斜杠\

    use test

    $test= new test\Test();

    (2)不使用应用情况下实例化:实例化要加绝对路径+new后必须加第一斜杠\

    use test

    $test=new \test\Test();

     

    2.手动注册

    在应用公共文件中添加下面的代码

    \think\Loader::addNamespace('my','../application/extend/my/');

    如果要同时注册多个根命名空间,可以使用

    \think\Loader::addNamespace([
        'my'  => '../application/extend/my/',
        'org' => '../application/extend/org/',
    ]);

    也可以直接在应用的配置文件中添加配置,系统会在应用执行的时候自动注册。

    'root_namespace' => [
    'my' => '../application/extend/my/',
    'org' => '../application/extend/org/',
    ]

     

    其namespace和use不用绝对路径,直接使用"root_namespace"或者Loader::addNamespace()中定义定义的字段代替其要代替的路径名称。

    风口下的猪2019-06-09thinkphp

    阅读更多
  • Request相关捕获

    thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 引入验证码及切换验证码

    thinkphp

    要使用验证码,首先Thinkphp5框架中要安装think-captcha扩展包。安装过后,会在vendor/topthink/中看到think-captcha文件。

    1.引入验证码

    在html中引入验证码的方法有两种,分别是:

    (1)

    {:captcha_img()}

    (2)captcha

     

    2.切换验证码

    切换验证码的思路是不断变换连接,例如:

          captcha
           3.验证码的配置
           验证码的配置是在config.php中添加验证码配置参数
           //验证码
    'captcha'  => [
    // 验证码字符集合
    'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
    // 验证码字体大小(px),根据所需进行设置验证码字体大小
    'fontSize' => 30,
    // 是否画混淆曲线
    'useCurve' => true,
    // 验证码图片高度,根据所需进行设置高度
    'imageH'   => '',
    // 验证码图片宽度,根据所需进行设置宽度
    'imageW'   => '',
    // 验证码位数,根据所需设置验证码位数
    'length'   => 4,
    // 验证成功后是否重置
    'reset'    => true
    ],

    风口下的猪2019-06-09thinkphp

    阅读更多
  • thinkphp5报错Request对象找不到

    thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 修改静态资源路径

    thinkphp

    在thinkphp中模板渲染,需要涉及到静态资源的载入。在开发过程中要查看或修改静态资源的位置

    其修改的地方视thinkphp版本不同而定,一般两个地方:要么是application(或app)下的congfig.php配置文件,要么是thinkphp文件下的library/think/下的View.php文件。

    或者直接在控制器中通过view()助手函数,进行对全局配置参数view_replace_str的设置

    方法1.在config.php中修改

    第一步:在index.php中定义SCRIPT_DIR静态路径常量

    //静态资源路径常量
    define('SCRIPT_DIR', rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/\\'));
          第二步:在config中定义静态路径:

    如果需要全局替换的话,可以直接在配置文件中添加:

    return = [
               // 视图输出字符串内容替换
                'view_replace_str'       => [
                    '/ponder/public'=> SCRIPT_DIR . '/public',          //前端网页css,img,js所在文件
                    '/ponder/public/static'=> SCRIPT_DIR . '/public/static',   //后台程序css,img,js所在文件
                    '/ponder/public/common'=> SCRIPT_DIR . '/public/common',   //前后共有css,img,js所在文件
                    '/ponder/'   => SCRIPT_DIR . '/'                 //定义首页
                ],
        ]
          方法2.在View.php中修改
    if ('' != $root) {
    $root = '/'.ltrim($root, '/');
    }
    $baseReplace = [
    '/ponder' => $root,
    '/ponder/index.php/admin/crumbs' => $base.'/'.$request->module() .'/'.Loader::parseName($request->controller()),
    '/ponder/public/static' => $root.'/static',
    '/ponder/static/css' => $root.'/static/css',
    '/ponder/static/js' => $root.'/static/js',
    ];
          方法3.在控制器中通过view()助手函数

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 新建模块

    thinkphp

    最开始一直习惯直接在application下直接建模块、控制器以及对应的model和view,然而在本地访问url+info时总是报404。

    错误分析:手动在文件夹下建模块等内容时,其不会在app.php等配置文件中记录,则访问会出现“模块不存在、控制器不存在等”

    所以,要习惯通过build.php来新增模块。

    方法如下:

    1.编写index.php

    // 定义应用目录
    define('APP_PATH', __DIR__ . '/application/');
    // 站点安装目录
    define('SITE_PATH','/thinkphp');
    // runtime文件路径
    define('RUNTIME_PATH', __DIR__ . '/data/runtime/');
    // 加载框架引导文件
    require './thinkphp/start.php';
    $build = include './build.php';
    // 运行自动生成
    \think\Build::run($build);
    注意点:
    (1).define('APP_PATH', __DIR__ . '/application/')中, __DIR__的配置是在config.php中,application是thinkphp的主程序文件夹名(thinkphp3中有的是app,thinkphp5则是application)
    2.编写build.php文件
    return [
    // 生成应用公共文件
    '__file__' => ['common.php', 'config.php', 'database.php'],
    // 定义demo模块的自动生成 (按照实际定义的文件名生成)
    'admin' => [
    '__file__' => ['common.php'],
    '__dir__' => ['behavior', 'controller', 'model', 'view'],
    'controller' => ['Entry', 'Test', 'UserType'],
    'model' => ['User', 'UserType'],
    'view' => ['Entry/index'],
    ],
    // 其他更多的模块定义
    ];
    注意点:
    (1)thinkphp5中所有的文件夹名称都是小写,但build.php中的控制器名称要采用驼峰命名法;
    (2)build.php在运行时会自己判断,已经有的文件夹和文件他不会覆盖,没有的文件夹和文件他会创建。
    3.运行build.php文件
    在index.php中末尾写了\think\Build::run($build);
    也就是说访问index.php文件则会自动执行build,php

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 嵌套使用select语言时使用多个order by报错

    MySQL

    风口下的猪2019-06-09MySQL

    阅读更多
  • 使用mysql数据库进行左右连接查询的时候出现错误提示 Column ‘id’ in where clause is ambiguous

    MySQL

    风口下的猪2019-06-09MySQL

    阅读更多
  • MySQL视图

    MySQL

    视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。通过视图,可以展现基表(用来创建视图的表)的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。

    一.创建视图的意义

    1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。

    2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。

    3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

    总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。一般在金融行业和医疗行业的数据库特别喜欢使用视图。

    二.视图使用的注意点

    (1)适用场景

    A.权限控制的时候,不希望用户访问表中某些含敏感信息的列,比如salary...;

    B.关键信息来源于多个复杂关联表,可以创建视图提取我们需要的信息,简化操作;

    (2)其与基表的联代关系

    虽然视图是一种虚表,但不要认为其是独立可删可改的,视图与基表关联非常紧密,删除或者改变其中一个,另一个也必然受到牵连。

    (3)视图和性能的关系

    视图由于和基表联系紧密,说白了就是基表的映射备份。也就是说,服务器处理数据是同时处理两份或者多份数据。数据库数据少还行,过了3到5万这个节点,读写和更新操作就很慢了,这时在有视图的情况下读写就更慢了。所以,视图与数据库性能成反比。

     

    三.创建视图

    (1)在单表上建立视图

    语法结构:

    CREATE VIEW viewName (view_column1,view_column2,view_column3)

    AS

    SELECT base_column1, base_column2, base_column3 FROM baseName

    WHERE...

    WITH CHECK OPTION

    #这里的with check option是说强制视图上执行的所有数据修改语句都必须符合由 select_statement 设置的准则。可加可不加

    使用实例:

    create view v_F_players(编号,名字,性别,电话)

    as

    select playernomber,name,sex,phone from PLAYERS

    where SEX='F'

    with check option;

    (2)多表上建立视图

    语法结构:

    CREATE VIEW viewName

    AS

    SELECT a.column1,a.column2,b.column1,b.column2,c.column1,c.column2,column1,column2

    FROM

    baseName1 a, baseName2 b ,baseName3 c

    WHERE...

    使用实例:

    create view v_match

    as

    select a.playernomber, a.name, matchno, won, lost, c.teamnumber, c.divition

    from

    PLAYERS a, MATCHES b, TEAMS c

    where a.playernomber=b.playernomber and b.teamnumber=c.teamnumber;

    主要这里使用了指针,将变量(a、b、c)指向了各个数据表,用以简化写法。

     

    四.查看视图

    select * from view_name;

     

    五.修改视图

    (1)使用CREATE OR REPLACE语句

    A语法结构:

    create or replace view view_name as select语句;

    B.使用实例:

    CREATE OR REPLACE VIEW v1(书名,价格) AS SELECT bookName,price FROM t_book;

    (2)使用ALTER语句

    A.语法结构:

    alter view view_name as select语句;

    B.使用实例:

       ALTER VIEW v1 AS SELECT * FROM t_book;

     

    六.删除视图

    DROP VIEW IF EXISTS v1;

    风口下的猪2019-06-09MySQL

    阅读更多
  • MySQL触发器

    MySQL

    MySQL好像从5.0.2版本就开始支持触发器的功能了

    触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

    一.触发器组成要素

    触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:
    1.监视地点(table)
    2.监视事件(insert/update/delete)
    3.触发时间(after/before)
    4.触发事件(begin和end之间的触发sql语句集)

     

    二.触发器语法

    create trigger triggerName

    after/before insert/update/delete on tableName

    for each row #这句话在mysql是固定的

    begin

    sql语句;

    end;

    例子如下:

    create trigger ins_stu

    after insert on student for each row

    begin

    insert into cj ( stu_id, stu_name)

    values( new.stuid, new.username);

    end;

     

    三.使用注意点

    1.触发器只能建在永久表上,临时表上不能建触发器;

    2.不推荐使用触发器,建议使用存储过程;

    3.触发器一般在并发不高的项目中使用;

    4.存储过程需要显式调用,意思是阅读源码的时候你能知道存储过程的存在,而触发器必须在数据库端才能看到,容易被忽略;

    5.Mysql的触发器本身不是很好,比如after delete无法链式反应的问题。

    风口下的猪2019-06-09MySQL

    阅读更多
  • MySQL插带和带插的区别

    MySQL

    一.insert into select语句(插带)

    1.语法结构

    语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1

    或者:Insert into Table2 select * from Table1

    2.使用注意点

    (1)要求目标表Table2必须存在,并且字段field,field2…也必须存在

    (2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键

    (3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

    Insert into Table2(field1,field2,…) values (select value1,value2,… from Table1)

    3.使用实例

    由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:

    --1.创建测试表

    create TABLE Table1 (

    a varchar(10),

    b varchar(10),

    c varchar(10)

    )

    create TABLE Table2 (

    a varchar(10),

    c varchar(10),

    d int

    )

     

    --2.创建测试数据
    Insert into Table1 values('赵','asds','90')
    Insert into Table1 values('钱','asds','100')
    Insert into Table1 values('孙','asds','80')
    Insert into Table1 values('李','asds',null)

    select * from Table2

     

    --3.INSERT INTO SELECT语句复制表数据部分列和常值

    Insert into Table2(a, c, d) select a,c,5 from Table1

    或:Insert into Table2 select * from Table1

     

    --4.显示更新后的结果

    select * from Table2

    二.select into from语句(带插)

    1.语法结构

    SELECT vale1, value2 into Table2 from Table1

    2.使用注意点

    要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。当然,如果是拿变量来盛放数据,变量是可以事先存在的(像序列中构建序列库,建取下一个值函数nextval就用的value这个变量来放值)

    3.使用实例

    --1.创建测试表

    create TABLE Table1(

    a varchar(10),

    b varchar(10),

    c varchar(10)

    )

     

    --2.创建测试数据

    Insert into Table1 values('赵','asds','90')

    Insert into Table1 values('钱','asds','100')

    Insert into Table1 values('孙','asds','80')

    Insert into Table1 values('李','asds',null)

     

    --3.SELECT INTO FROM语句创建表Table2并复制数据

    select a,c INTO Table2 from Table1

     

    --4.显示更新后的结果

    select * from Table2

     

    --5.删除测试表

    drop TABLE Table1

    drop TABLE Table2

    三.总结说明

    1.SELECT INTO 语句可用于创建表的备份复件。

    风口下的猪2019-06-09MySQL

    阅读更多
  • 软件开发
  • 素质要求
  • 计算机基础
  • 架构
  • 安全
  • 性能
  • 运维
  • 尾页
  • 数据库
  • 开发终端
  • 语言基础
  • 项目管理
  • 产品设计
  • 系统
  • 工作规范
  • 计算机网络
  • 前端技术栈
  • 数据结构
  • 计算机组成原理
  • 后端技术栈
  • 性能优化
  • 安全设计
  • 常见模块
  • 计算机操作系统
  • 服务器
  • python
  • MySQL
  • thinkphp
  • PHP
  • Java
  • JavaScript
  • Windows
  • Linux
  • 特效
  • indexedDB
  • vue
  • 淘宝联盟
  • Ionic
  • Angular
  • 微信小程序
  • 支付宝小程序
  • uni-app
  • css/sass/less
  • 支付
  • socket
  • 爬虫
  • web性能优化
  • 消息推送
  • CVM
  • sqlite
  • Redis
  • 前端基础
  • 基础
  • element
  • Nginx
  • yii2
  • /ponder/index/catelist/catelist/cateid/10.html

    我的名片

    网名:风口下的猪

    职业:软件开发、广告传媒

    现居:重庆渝北

    Email:kamoneyte@qq.com

    标签云

    站点信息

    • 文章统计:528篇
    • 移动端访问:扫码进入SQ3R