您的位置:首页 > 编程语言 > PHP开发

Thinkphp学习笔记(1)

2015-10-11 20:11 417 查看
1、get_define_constants( );  //获取当前系统提供的常量,加true参数可以实现分组显示

2、$user = A("User");  // 通过快捷函数实例化控制器对象,参数A(" [项目:// ] [ 模块/ ] 控制器标志 ")

3、call_user_func_array(); //对象调用方法并传递参数的一个表现形式

4、设置常量有两种方式:

      const  name = value;   // 作用域根据当前命名空间决定

      define()   //作用域 全局

          1).  定义了许多常量

          2).  引入核心文件 Think.class.php

          Think::start();

5、ThinkPHP/Library/Think/Think.class.php

      start  function  start ()

      1).  引入系统核心文件

      2).  引入配置文件

      3).  如果是生产模式,还会生成 common~runtime.php

      4).  如果是第一次使用系统,还会创建对应的应用目录

      App::run();

6、ThinkPHP/Library/Think/App.class.php

      start  function  run()

            App::init();  --> Dispatcher::dispatch();

                  // 路由解析,把模块、控制器、方法赋予常量

                  // MODULE_NAME = 模块名称

                  //CONTROLLER_NAME  控制器

                  //ACTION_NAME  方法

            App:exec();

7、空操作和空控制器处理

      1).  空操作:在控制器中定义function  _empty($m, $arg)

      2).  空控制器:定义控制器 EmptyController.class.php   _empty() 方法

8、如果没有对应的model模型文件类,也可以直接实例化model对象进行操作

      D( ) 和 M( ) 方法都可以实例化操作一个没有具体model模型类文件的数据表。

9、sql 语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作

      父类model具体存在方法:filed()  where()  limit()

      还有一些方法在 __call() 自动调用函数里边:table()  group()  order()  having()

      在 __call()魔术方法里边会判断当前的执行方法是否是一个method 属性的元素信息,如果存在就会执行.

      以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性 options里边,最后根据options 拼装 sql 语句。

10、 select() 返回一个二维数组,find()可以返回一个一维数组。

11、having() 方法设置查询条件,where()设置查询条件

      having 和 where 区别

            1).  使用有先后顺序

            2).  where  price > 100       having  price > 100

            3).  where  设置条件,字段必须是数据表中存在的字段

            4).  having 设置条件,字段必须是 select 语句查询出来的字段可以使用

12、add() 该方法返回被添加的新纪录的主键id值

      save() 实现数据修改,返回受影响的记录条数

      delete() 返回受影响的记录条数

      query() 返回一个二维数组信息

      execute()  返回受影响的记录条数

13、命名空间

      1).  简单应用

            a、命名空间是虚拟的定义空间,不是真实存在目录

            b、命名空间的分隔符都是反斜杠 \

            c、非限定名称: getName()  获得与其最近的命名空间的getName()

            d、限定名称: beijing\getName()    相对方式(beijing命名空间)

            e、完全限定名称: \beijing\getName()  直接在指定的命名空间获得具体元素

      2).  别名和引入

            a.  引入 use

            b.  使用一个元素,使用非限定名称,在当期那最近的空间里边获得元素

            c.  如果当前空间里边没有指定元素,也可以在导入的空间里边寻找

            d.  如果在引入空间的时候也把元素引入了,在当前的空间里边也有同名字的元素,那么这个外来的元素和内部元素要有冲突,

                 这时可以通过别名定义来重新给外来的元素起名字并使用

      3).  公共空间

            a.  没有使用namespace定义空间,当前空间就是一个公共空间

                  function getName()   ----公共空间的元素

                  namespace  beijing;

                  function getName()   ----beijing 空间的元素

            b.  例如一个有namespace的文件引入一个没有namespace的文件程序

            c.  没有namespace的文件空间就是公共空间

            d.  在namespace文件里边可以通过 \ 斜杠直接访问公共空间元素

            e.  当前文件没有namespace,单引入的文件有namespace,当前文件就是公共空间,引入的文件有自己空间

             f.  公共空间有两种情况:

                 1.  当前有空间,引入没有空间(公共空间)

                       默认使用当前空间的元素

                       统一 \ 斜杠引入公共空间元素

                 2.  当前没有空间(公共空间),引入有空间

                       默认调用当前公共空间的元素(非限定名称)

                       使用有公共空间的元素(限定名称、完全限定名称)

                  注意:同一个页面里边有许多空间,在页面最下边使用上边空间的元素,名称需要使用完全限定名称,还可以把上边空间

                        的元素给use引入过来也可以通过非限定名称或限定名称使用

            命名空间使用注意:

                  1.  针对类名、函数名、常量const起作用,define() 定义的常量不受命名空间限制

                  2.  声明namespace的当前脚本的第一个namespace声明之前不能有任何代码(header头代码也要写在下边)

                  3.  命名空间是虚拟抽象的空间,不是真实存在的目录

                  4.  当前文件可以include具体命名空间的文件,默认空间是当前文件的公共空间

                  5.  元素调用分:非限定名称、限定名称、完全限定名称

14、缓存操作:

      S(name, value, 有效期(秒));  设置缓存变量

      S(name)   读取缓存变量信息

      S(name, null)   删除指定的缓存变量

      S(null)   删除全部的缓存变量

15、1).  附件上传

            <form  enctype="multipart/form-data">

            $_FILES

            move_uploaded_file(临时路径名,真实路径名); (local.class.php中)

      2).  为上传图片做缩略图

            a.  利用已有图片创建一个画板

            b.  把画板给缩小一点:imagecopyresampled()

            c.  imagepng($im, 路径名)   保存到系统一个指定目录

            d.  ThinkPHP/Library/Image.class.php

            e.  open() 打开一个图像资源

             f.  thumb()  制作缩略图,设置图像的宽度、高度、达到制作缩略效果

            g.  save() 保存图像

16、面向切面是一种设置模式

      a.  把一个大块的功能给分解为小块的功能,这样小块功能利于开发、维护、升级、部署

      b.  thinkPHP框架的面向切面编程设计体现在Behavior行为里边

      c.  thinkPHP框架的行为Behavior如何执行:

            1.  框架执行流程分析:index.php   ThinkPHP.php  App.class.php

            2.  Think::start();

            3.  ThinkPHP/Conf/Mode/common.php   tags 标签内容是行为的内容

            4.  自定义Application/Common/conf/ tags.php文件

            5.  自定义tags.php 内容会覆盖制定的common.php的配置内容

      App.class.php

            1.  funtion  run();

            2.  Hook::listen(‘app_begin')

            3.  ThinkPHP/Library/Think/Hook.class.php

            4.  function  listen()

            5.  tags 标签的内容解析出来:CheckLang

            6.  self::exec(’CheckLang')

            7.  function  exec()

            8.  CheckLangBehavior

            9.  new  CheckBehavior;

            10.  obj->run();   运行具体行为

17、RBAC:基于角色的访问权限设置(网站后台)

      sw_manager   后台用户管理员表

      sw_role            角色表

      sw_auth           具体权限表

18、通过已经模拟好的数据进行相关程序开发

      a.  用户登录系统,左边显示权限按钮会根据具体角色显示

      b.  在左边显示对应的权限信息

            1.  用户登录系统显示权限信息 $_SESSION['mg_id']

            2.  根据session信息获取角色role_id 信息

            3.  根据角色id信息获取权限列表ids信息

            4.  根据权限ids信息查询具体权限信息进行显示

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: