表示一个域名下的所有/任何主机 使用 的格式是: [*.] 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. ruby自动化之selenium webGUI

    1.下载ruby语言包,windows下需要安装rubyinstall http://railsinstaller.org/en 2.cmd命令下安装selenium-webdriver gem包 g ...

  2. <1>lua编译环境 数据类型和局部变量

    1.编译环境 http://www.lua.org/download.html下载 解压后 bin目录中lua.exe运行   luac.exe编译成lua字节码 2.基本数据类型 整数,小数,布尔值 ...

  3. Sitecore系统教程之模板理解

    Sitecore中的所有内容都是一个项目.模板也是如此.Sitecore中的模板是一个项目,它定义了其他项目的结构和行为.Sitecore中的每个项目都是某个模板的实例.模板还可以定义它分解成的部分和 ...

  4. Java输入输出流(IO)-----文件类File详解

       1.java.io.File类简介 凡是与输入.输出相关的类.接口等都定义在java.io包下 File是一个类,可以有构造器创建其对象.此对象对应着一个文件(.txt .avi .doc .p ...

  5. 最小二乘法的Java实现

    最小二乘法原理十分简单,这里不再赘述.对于预测公式y' = a * x + b,最优解如下 double a = Sxy / Sxx; double b = yAvg - a * xAvg; doub ...

  6. MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...

  7. 4、CentOS6.5下安装php5.3

    操作系统:CentOS6.5 环境:Apache2.2安装成功.可查看:http://www.centoscn.com/image-text/install/2014/0505/2910.html M ...

  8. [转载]C#中IndexOf的使用

    注:此方法无法找出目标字符串第二次.第三次等出现的位置. 具体代码如下所示: 1 2 3 4 5 var array=['REG','2018','2018'];   array.indexOf(‘R ...

  9. linux系统Centos环境下搭建SVN服务器及权限配置

    linux系统Centos环境下如何搭建SVN服务器以及svnserve.conf.authz.passwd配置文件详细介绍   至于svn的概念,这里就不做详细阐述了,可以自行百度.简单来讲就是一个 ...

  10. 不懂RPC实现原理怎能实现架构梦

    RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存在 ...