ThinkPHP 命名空间以及类库加载理解和总结

浏览:16856 发布日期:2014/08/04 分类:技术分享
ThinkPHP 命名空间以及类库加载理解和总结

ThinkPHP 3.2采用了命名空间,虽然原先import的方式也能加载类库,但是要跟随最新版嘛.

什么是命名空间?

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决.

使用命名空间并加载类库

作为新手的我整整捯饬了一个下午才跌跌撞撞地加载成功.举个例子更好理解:
首先我先建立一个类文件Auth.class.php:<?php
  namespace Home\Controller;
  class Auth{
    function get_world(){
      echo "hello world";
    }
  }
 ?>
将其放到Home\Controller下面,然后如下使用:$Auth = new Auth();如果,我想将类文件放在文件夹里面,不放在Controller中呢.
首先在Home\Fun\文件夹中建立Auth.class.php,Fun文件夹就是我存放类文件的目录,代码如下:<?php
  namespace Home\Fun;
  class Auth{
    function get_world(){
      echo "hello world";
    }
  }

 ?>
如下使用:$Auth = new \Home\Fun\Auth();还可以将Auth.class.php放在ThinkPHP/Library/Org/Util中,修改命名空间如下:<?php

  namespace Org\Util;
  class Auth{
    function get_world(){
      echo "hello world";
    }
  }

 ?>
如下使用:$Auth = new \Org\Util\Auth();通过修改命名空间就可以加载在不同位置的类文件啦.
需要注意的是:

一定要注意大小写,Fun不要写成FUN.就这一个小毛病我改了我一下午
注意使用的命名空间和声明命名空间的路径有点不一样呢,一个是new \Org\Util\Auth();,一个是namespace Org\Util;,多了一个\,你有没有犯这个低级错误(⊙o⊙)?
最佳答案
评论( 相关
后面还有条评论,点击查看>>