php-namspace (php自定义命名空间)站点:http://www.soft600.cn/PHP_NamSpace/namspace.php  Email:[email protected] 下载地址:download dll文件 download 项目包 原创作品  (相关资源可以去主站下载)php-namspace php扩展插件使用方式:在您的win版的 php中放入 php_namspace.dll ,在php.ini中载入该扩展!重启您的apache 或iis 在程序中使用using("")进行调用如下:项目文件夹结构图: 
  
命名空间规范和文件夹结构相互对应,例如mysql的命名空间引用 using("DataBase.Mysql.Odbc") 对应的文件夹结构为 DataBase/Mysql/Odbc ,同时必须注意类名 和 文件名必须相同 如: class ms_odbc{} 文件名为:ms_odbc.php  
ms_odbc.php: 
  
my_odbc.php: 
  
pl_table.php: 
  
index.php 调用的代码结构: 
 
 
显示结果: 
mysql的调用:This is my_odbc!
mssql的调用:This is ms_odbc!
插件的调用:this is g-table!  Email:[email protected] 下载地址:download dll文件 download 项目包 原创作品 

解决方案 »

  1.   

    在项目设计中,我们常常需要对项目进行合理的文件和结构管理,
     比如 文件夹1 底层封装(xml class,数据库连接 class 等等)
          文件夹2 功能模块1
         文件夹3 功能模块3
    php-namspace 使用文件夹的结构模式来定义您的命名空间,对于代码的规范性很有帮助!其次:命名空间的调用减少了代码的书写量 using("System.Data");在程序中就可以直接调用:
     $test= new data(); 书写简便 不需要使用额外的 include  或 __autoload();
    在载入您的代码
    再则:其实现方式,实际是在源码中调用__autoload相同的效果实现而成,是一种更有效的运行机制!
      

  2.   

    你这个没有别名嘛?比如a文件夹下有data 类,b文件夹下也有data类,我现在要同时使用2个类,难道不冲突?
      

  3.   

    zend formwork 的 class的命名规范 是文件夹_类名  来定义,
    使其适用您所说的唯一性的,但常常 class 名称过长,增加书写负担!我所发表的自定义命名空间,是在现有php2.9版本基础上写的扩展,
    并不是 php5.3版中命名空间的概念,即是在5.3版本中也是有同样的问题,两个命名空间中类名 重复怎么办?所以 结合 zendformwork 的做法,在设计项目时, 两个不同类的名称前可以适当加入简短前缀来区分
    比如:
    using("System.User") // class tools(){}
    using ("System.Plugin") // class tools(){}您在书写时可以这样:using("System.User") // class ur_tools(){}
    using ("System.Plugin") // class pl_tools(){}
    来进行区分.......  发布代码只做参考与学习,有不足之处 希望多提意见,再则本人能力有限 如有误之处见谅!