表示一个域名下的所有/任何主机 使用 的格式是: [*.] example.com 其中 , example.com叫着 裸域名. (这个example.com/net/org不能被注册, 被保留) 其中 [*.] 中的 点 要放在 括号内.

tp的类自动加载, 总的来说 分两大类

  • 一类是 使用 命名空间的, 这个也是 tp推荐的方式, 可以实现自动加载
  • 另一类是 不使用 命名空间的.

要实现 自动加载, 需要遵循 以下规定:

  1. 是要用 命名空间 来定义;
  2. 是 类的命名要符合 规范, 包括 驼峰命名 和 类的后缀必须是 .class.php
  3. 是 类文件 的 物理位置 必须 和 命名空间的路径 一致.
  • 只要按照上面的规定来做, 就可以实现 自动加载.
  • 系统默认的 可以自动加载的类库是: 第一个是 框架的 Library下的 目录, 叫公共类库, 可以自动加载, 不需要任何说明的; 第二个是 应用类库, 即 Application项目目录下的所有目录, 包括模块目录,common目录, 或者你自己在 项目目录下创建的目录都叫 应用类库, 都可以实现 自动加载
  • 另一个是 你自己增加的 /扩展的/ 注册命名空间: 使用 'AUTOLOAD_NAMESPACE' => array(...);
  • 再一个是你 自己增加的 类/类库 映射, 在 项目的conf目录下创建的 alias.php 文件中的 映射.
    加载的先后次序包括 
    首先检查 alias.php的类映射, 然后是 Library下的 公共类库, 然后是 你 注册的 扩展命名空间, 最后是 应用类库.

第二类就是 , 除了上面的 可以自动加载的 类库, 你想找挫折的时候, 要用 import(...) 来引入的类库(一个类文件, 最好就是 只包含一个 类的 定义)

  1. 没有使用 tp的规范 命名, 比如没有遵循 驼峰命名法.
  2. 类的扩展名不是 .class.php, 而是直接用 className.php 来命名的
  3. 没有使用 命名空间
  4. 虽然使用了命名空间, 但是 物理路径 /位置, 和 命名空间表示的 不一致.
    这几种情况, 都可以用 import来做:
  • import的格式 import('类名' [, '类的路径' [, '类的扩展名比如php']]
  • 通常 import 可以自动识别的 类的 位置 是 公共类库 和应用类库的 位置 , 如果 不是这两个, 那么就要使用 第二个参数 指明 类的位置, 如果类的扩展名不是 .class.php 就要使用 'php'

关于tp的ajaxReturn的使用

在php中实例化一个 php的 原生对象, 使用的是: $o = new \stdClass(); 是用 staClass 而不是 new \Object(), 会提示 没有叫 Object的类.
在tp的控制器中, 指定类的实例化路径时, 因为 你的代码是写在 类定义 的 方法中的, 类定义的 前面是 namespace命名空间,
命名空间默认的 通常是: namespace Home\Controller 就是说 , 方法中所有的 类实例化的时候, 如果不写 "根命名空间", 那么就是引用的
当前命名空间 即: Home\Controller目录中的类. 所以 会报错: Home\Controller中没有这样的类.

  • **实例化类时, 要使用 "完全限定 命名空间", 即从 反斜杠开始的 根 命名空间, 那么tp就会去查找 系统默认 的 有哪些根命名空间, 包括公共类库
    应用类库, 自定义扩展类库, 和映射类库, 这些都是 系统默认的 "根命名空间". 注意 根命名空间, 并不是网站的根目录!

  • ajaxReturn 本身也要return数据, 但是这个返回的数据, 不是给 本类的 其他成员方法使用的, 而是给 ajax客户端使用的. 因为它是ajaxReturn嘛
    因此, 这个方法的调用方式, 就不是: return, 也不是 return $this->ajaxReturn(...), 而是 直接的就是 调用这个方法就好了
    在ajax接收处理handler方法, 的 最后, 调用 $this->ajaxReturn('要返回给前端的数据变量$data')

当然也不能直接在模板中, 使用 {:U('ajaxReturn')} 因为这个U 方法本身其实得到的是一个 html模板地址, 是 一个 控制器的叫 ajaxReturn名称的成员方法, 很显然, 控制器中并没有叫ajaxReturn 的成员方法.

  • 也就是说, 这个 ajaxReturn 要和jquery的 ajax前端请求, 相配合使用, 前端还是 普通的 ajax请求 写法. ajax请求 的地址 还是 控制器的一个
    普通的成员方法, 比如叫 ajaxHandler,

再谈 tp的 实例化 类 的自动加载的更多相关文章

  1. thinkphp系列:类的自动加载是如何设计的

    在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...

  2. 浅析PHP类的自动加载和命名空间

    php是使用require(require_once)和include(include_once)关键字加载类文件.但是在实际的开发工程中我们基本上不会去使用这些关键字去加载类. 因为这样做会使得代码 ...

  3. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  4. final关键字,类的自动加载,命名空间

    final关键字 1.final可以修饰方法和类,但是不能修饰属性: 2.Final修饰的类不能被继承: 3.Fina修饰的方法不能被重写,子类可以对已被final修饰的父类进行访问,但是不能对父类的 ...

  5. PHP面向对象学习-属性 类常量 类的自动加载 构造函数和析构函数 访问控制(可见性)

    在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性.静态属性则是用 ::(双冒号):self::$ ...

  6. PHP面向对象----- 类的自动加载

    1.类的自动加载 spl_autoload_register函数 test.php <?php spl_autoload_register('autoload'); // require_onc ...

  7. tp5底层源码分析之------tp5.1类的自动加载机制

    tp框架作为国内主流框架,目前已经发布了6.0版本,相当于3.*版本是进行了重构,今天我们从源码的角度来研究下tp5.1自动加载的实现 作为单入口框架,从入口文件看起,入口文件在public/下,那么 ...

  8. php composer 实现类的自动加载

    我们在开发项目中会经常用到第三方的类库插件,但是如果每次需要使用的时候都会在代码的某一处去引入,然后在实例化,这样做感觉很不方便,那么怎么实现自动加载呢,下面简单介绍使用composer实现自动加载: ...

  9. Drupal如何实现类的自动加载?

    Drupal通过spl_autoload_register()注册类加载器实现自动加载: function _drupal_bootstrap_database() { // ... .... spl ...

随机推荐

  1. python拼接变量、字符串的3种方法

    第一种,加号(“+”): print 'py'+'thon' # output python str = 'py' print str+'thon' # output python 第二种 ,空格: ...

  2. base64的编码

    计算机中的数据一般是由ascii编码,来存储的, 0---31以及127,表示的是控制字符: 32-126表示的是字符,包括空格,阿拉伯数字,大小写字母: 之后的128个字符,是不可见的字符, 在网络 ...

  3. 区别JS中类的静态方法,静态变量,实例方法,实例变量

    1.类的静态方法 先来段代码之后分析 // JS类静态函数 function BaseClass() { } // 类添加add函数 BaseClass.add = function() { cons ...

  4. html5-文件的基本格式

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. 异常点/离群点检测算法——LOF

    http://blog.csdn.net/wangyibo0201/article/details/51705966 在数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异 ...

  6. 国外互联网大企业(flag)的涨薪方式

    国外互联网大企业(flag)指的是:Facebook,Google,Amazon,LinkedIn 至于 A 代表哪家公司存在争议:有人说是Amazon,也有说是Apple,现在更有人说应该是AirB ...

  7. git 新建本地分支后将本地分支推送到远程库, 使用git pull 或者 git push 的时候报错

    是因为本地分支和远程分支没有建立联系  (使用git branch -vv  可以查看本地分支和远程分支的关联关系)  .根据命令行提示只需要执行以下命令即可git branch --set-upst ...

  8. JS 和 Jquery 的一些常用效果

    https://www.cnblogs.com/beiz/tag/%E7%BD%91%E9%A1%B5%E5%B8%B8%E8%A7%81%E6%95%88%E6%9E%9C/   北执

  9. vue -resource 文件提交提示process,或者拦截处理

    this.$http.post('url',fd||data,{emulateJSON:true}).then(fn(res){},fn(res){}) process成功案例 _self.$http ...

  10. ubuntu_virtualenv

    sudo pip install virtualenv 1.安装virtualenv(需要先安装pip): $ [sudo] pip install virtualenv 2.创建虚拟环境: $ vi ...