zoukankan      html  css  js  c++  java
  • thinkphp-许愿墙-2

    在数组中,也可以使用函数,如:

    $data = array(
        'username'=> I('username','', 'htmlspecailchars'),
        'content'=> I('content', '', 'htmlspecialchars'),
        'time'=> time(),
    );
    
    

    在php中就只能使用php的 函数, (可以包含thinkphp为我们定义的函数) , 不要跟mysql中的函数弄混淆了!

    thinkphp中的数据库连接?

    你不用自己显式的去写数据库连接代码, 只要在config.php中写上数据库连接配置就行了:

    'DB_HOST'=>'127.0.0.1',
    'DB_USER'=>'root',
    'DB_PWD'=>'',         // 注意这里不是password, 根据"写得最少..."的原则
    'DB_NAME'=> '使用的数据库的名称',
    'DB_PREFIX'=> 'th_',
    
    
    以后在项目中就直接使用模型方法即可, 如:
    
    // M('table_name') = new Model('table_name')
    $id = M('table_name') -> data($data) -> add();
    
    // data($数组) 创建一个插入记录的数据对象
    // add方法返回插入记录的 id号. 
    
    

    在控制器( "是一个类") 中的方法里, 写代码, 成员方法中的 $this 指的是 当前这个 控制器类的 一个对象实例! 使用的$this-> function(...)是控制器类的 成员方法. 而所有的 "单字母方法" 如:I方法, M()方法等等应该就是全局方法. 不需要$this的!

    成功和失败的方法?

    $this->success('成功提示信息', '成功时跳转的页面 --- 对应的方法 名称');
    $this-> error('失败时的提示信息', ['默认的是返回原来的提交页面'] );

    think的删除数据记录?

    $result = M('table_name')->where('id>0')->delete();   // delete函数必须带 where条件方法, 否则执行失败!
    $result = M('table_name')->where(array('id'=> array('gt',0)))->delete();
    $result 是表示删除的记录数;
    
    因为think不允许不带条件的 直接调用delete方法, 那样是很危险的!
    
    

    think的查询?

    M('table_name')->select(); 
    // 查询全部记录;
    

    form表单中, action="", 默认提交到当前页面.

    模板中的{} 就相当于, 是一种简单写法:
    输出不同的 "模板值"方法不同:

    • 如果是变量, 直接{$var}就可以输出;
    • 如果是函数, 需要加冒号: {:function()}
    • 如果是函数, 不加冒号, 会执行,但没有输出: {func()}, {~func()};
    • 输出session: {@var}
    • 输出cookie: {#var}
    • 输出get变量: {.var}, 输出post变量: {^var}, 输出常量{*ar}, 输出配置变量{&ar}等等

    从控制器方法中, 分配变量到模板有三种方法:

    	$this->assign('a',11);
    	$this->a = 11;
    	$this->assign('a', 11)->display();
    	// 分配变量的时候, 不需要加$ 符合.
    	
    

    thinkphp的大括号和尖括号
    大括号{ }表示输出变量或函数,
    尖括号<> 表示think的Tag lib标签库, 跟html的标签一样的. 由think的模板引擎来解析.如:

    <foreach name='wish' item="v">
    ... // 注意, 因为是一个标签, 所以, foreach不能分开写...
    
    </foreach>
    
    <foreach name="wish" key='k' item='v'>
    ... {$v['id']}  等于 {$v.id} 
    
    这里最好是使用 点号, 这样会自动检测: 
    如果是数组, 就转换为 $v['id']
    如果是对象, 就转换为$v->id.
    
    </foreach>
    
    // 那么, 如果你知道是解析的数组, 不需要解析判断 对象的时候, 可以提高解析速度, 配置为:
    'TMPL_VAR_IDENTIFY'=>'array', 即可!
    

    那么, 如果你知道是解析的数组, 不需要解析判断 对象的时候, 可以提高解析速度, 配置为: 'TMPL_VAR_IDENTIFY'=>'array', 即可!

    在thinkphp的模板中使用函数?

    {$v.time|date="y-m-d H:i",###}
    
    在模板中对 前面的变量内容 使用函数, 要用 竖线| 即可
    = 表示传递参数, 多个参数之间用逗号风隔, 前面的变量, 用###表示.
    
    

    随机数: 不要用rand, 而是用 mt_rand(min, max): mt表示: mersenne twister算法, 比rand快.好.

    ===============================================================

    thinkphp的项目分组

    1. 同样是建一个单入口index.php, 只不过名字叫做 App
      // 注意, 这个单一入口文件index.php, 以及生成的项目文件夹, 其实跟之前的任何一个 "非分组" 的项目入口文件都是完全相同的
      // 并不是你叫App就有什么不同, 真的要使它们成为 "分组"项目, 发生不同的是你随后的配置和分别创建的子项目文件夹!

    2. 其他配置/ 文件夹, 都是创建 相应 "子项目" 的配置 或者文件夹.

    主要有 几个 地方: Conf, Common, Lib, Model等等.

    第一, Conf 下的config.php是所有项目都可以 公用 的配置, 
    	而在Conf下创建对应的分组项目文件夹及其配置, 则是单独有效的:
    		Conf/Index/config.php(仅仅前台有效), Conf/Admin/config.php(仅后台有效)
    		
    第二, Lib控制器下的控制器:
    	删除原来创建的 IndexAction.class.php;
    	分别创建Index 和Admin文件夹
    	分别在对应的文件夹下创建 IndexAction.class.php则对应着对应的项目 控制器...
    

    /* !!!!!!!!!!!!!!!!!!!

    在Conf/config.php下配置 项目分组:
    return array(
    	'APP_GROUP_LIST' => 'Index, Admin, Member, Register....',
    	'DEFAULT_GROUP' => 'Index', // 注意是default group不是group _ default.
    );
    	
    第三, common文件夹下的公用文件
    	common下的common.php中的函数, 所有项目都可以使用, 是公用的
    		而在common文件夹下分别创建的Index/ Admin文件夹下的 
    			分别创建的 function.php( 特别注意, 不是common.php!!!)则只能是对应的项目可以使用的函数!
        
        第四, Tpl模板分组:
                在App/Tpl目录下分别创建Index和Admin文件夹, 作为分组项目的模板文件夹,
                 
                然后再创建控制器对应的文件夹Index 和 方法对应的模板文件index.html
                
                如:
                    App/Tpl/Index(分组子项目)/Index(对应控制器)/index.html(对应方法)
                    App/Tpl/Admin/Index/index.html......
                
                 为了减少模板 文件 对应的目录层次太深, 可以配置 
                    'TMPL_FILE_DEPR' => '_'
    
                    这样就可以将 控制器和 模板文件名之间用 上面定义的符合 连接起来, 从而 减少一个 控制器的目录.
    
                    比如, 这时后的模板文件的目录就是: App/Tpl/Index/Index_index.html
    

    ===============================================================

  • 相关阅读:
    阅读 Android源码的一些姿势
    Unity3d UGUI 界面适配 实例解析 三种适配方式
    Unity3D Android手机开发环境配置
    DOTween教程
    DoTween 部分中文文档
    C# 委托、事件,lamda表达式
    EditText中输入信息的限制的方法
    Android中shape中的属性大全
    Android 高版本API方法在低版本系统上的兼容性处理
    python 绘制f(x)=x^2
  • 原文地址:https://www.cnblogs.com/bkylee/p/5303439.html
Copyright © 2011-2022 走看看