资讯专栏INFORMATION COLUMN

PHP类自动载入和PSR-0规范

Imfan / 2050人阅读

摘要:自动载入函数写到了文件夹下的类中的一个方法里,根据前边讲到的规范,类的命名空间与绝对路径保持了一致。比如当文件夹下的类载入时,打印自动载入函数中参数值是。

PSR-0
PSR-0是php业界提出的一个大家共同遵循的规范,很多php框架都遵循PSR-0规范,它有三项约定:

php的命名空间必须与绝对路径一致

类名的首字母必须大写

除入口文件外,其它的.php文件必须只有一个类

开发一个符合PSR-0规范的框架很简单,只要满足下面三个条件就可以了:

全部使用命名空间

php类库文件自动载入,不能有include/require

保证有单一入口

类自动载入

SPL(Standard PHP Library)是php的标准拓展类库,php实现类自动载入推荐使用SPL提供的spl_autoload_register方法注册一个类自动载入函数。下面是一个简单的例子。

简单例子
 demo目录结构很简单,只包含唯一入口文件index.php。我把自动载入函数另外写到了SplAutoload文件夹下的一个类文件中,通过include_once引入到入口文件中实现类库的自动载入。


自动载入函数写到了SplAutoload文件夹下的Autoload类中的一个方法里,根据前边讲到的规范,类的命名空间与绝对路径保持了一致。Autoload类源代码如下:


其中自动载入函数load方法的参数$class其实是在类自动载入过程中,对载入类的唯一标识,它是一个带有命名空间的类名字符串。比如当APPController文件夹下的LoginController类载入时,打印自动载入函数中参数值$class是:AppControllersLoginController。所以PSR-0中的规范约定:php的命名空间必须与绝对路径一致可以保证载入类的唯一性,避免混淆和重复载入相同的类导致的错误。
为了做演示,我们在APPControllers文件夹下新建了两个类文件:LoginController和UserController。它们中的内容很简单,只是打印信息,要注意它们符合PSR-0规范,所以命名空间的设置要符合标准。源代码如下:


");
  }
}

入口文件中的内容基本上和前边简单的例子一样,只是将自动载入函数写到了多带带的文件里进行管理,在入口文件中直接调用指定类的中的方法就可以了,无需自动载入了。下面是入口脚本代码和演示结果:

queryMsg();

至次,一个简单的符合PSR-0规范的实现类自动载入的PHP基础框架就搭建完成了!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28779.html

相关文章

  • PHP PSR-4 Autoloader

    摘要:详细说明此处的类泛指所有的类接口可复用代码块以及其它类似结构。末尾的类名必须与对应的以为后缀的文件同名。完整类名命名空间前缀文件基目录文件路径关于本规范的实现,可参阅相关实例注意实例并不属于规范的一部分,且随时会有所变动。 Autoloader 关键词 必须(MUST)、一定不可/一定不能(MUST NOT)、需要(REQUIRED)、将会(SHALL)、不会(SHALL NOT)、应...

    Eastboat 评论0 收藏0
  • PHP PSR-0 自动加载规范

    摘要:自动加载规范此规范已被弃用本规范已于年月日被标记为弃用,目前最新的替代规范为。本文是为自动加载器实现通用自动加载,所需要遵循的编码规范。这也是目前建议的类文件载入方式。 自动加载规范 此规范已被弃用 - 本规范已于2014年10月21日被标记为弃用,目前最新的替代规范为 [PSR-4] 。 本文是为自动加载器(autoloader)实现通用自动加载,所需要遵循的编码规范。 规范说明 ...

    kyanag 评论0 收藏0
  • PHPPSR简要规范

    摘要:是一系列关于开发的规范,分有好几个版本,自己学的也较为肤浅,但还是希望能时常查看规范,为了方便记忆和遵循,我把关键词为必须的捡拾出来,做个简单地必要规范的记录。所有文件必须使用作为行的结束符。 PSR是一系列关于PHP开发的规范,分有好几个版本,自己学的也较为肤浅,但还是希望能时常查看规范,为了方便记忆和遵循,我把关键词为必须的捡拾出来,做个简单地必要规范的记录。(就是个搬砖的。。。)...

    Steve_Wang_ 评论0 收藏0
  • PHP自动加载功能原理解析

    摘要:前言在开始之前,欢迎关注我自己的博客这篇文章是对自动加载功能的一个总结,内容涉及的自动加载功能的命名空间的与标准等内容。要实现第一步,第二步的功能,必须在开发时约定类名与磁盘文件的映射方法,只有这样我们才能根据类名找到它对应的磁盘文件。 前言 在开始之前,欢迎关注我自己的博客:www.leoyang90.cn 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能、P...

    Imfan 评论0 收藏0
  • 解读 thinkphp5 源码(一):自动加载

    摘要:索性读一下它的源码。行载入类载入类,这个类比较重要,实现了自动加载。注册错误和异常处理机制加载惯例配置文件接下来我们看一下自动加载的实现方法。所以借助此函数可以达到自动加载。博客链接解读源码一自动加载 听说 TP5 已经 RC4 了,曾经在 RC3 的时候用它写过一个小东西。官方说从 RC4 以后改动不是太大。索性读一下它的源码。然后顺便记录一下,如有错漏,请路过大神多多指正! 入口 ...

    stormzhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<