针对PHP这种编程语言,到目前FIG指定了五个规范,分别如下: PSR0:自动加载: PSR1:基本代码规范: PSR2:代码样式规范: PSR3:日志接口规范: PSR4:自动加载规范: 看上去PSR4与PSR0是重复了,但是PSR4规范比较干净,可以看成PSR0规范的升级版.二者最重要区别在于:PSR0规范中,下划线会被转换为目录分隔符,但是PSR4中下划线不具有特殊的含义.二者都是通过特定的目录.文件名以及类名,实现快速查找到类文件,并将相应的类加载进来. PSR0和PSR4要求有个命名的…
PSR-0规范 命名空间必须与绝对路径一致 类名首字母必须大写 除去入口文件外,其他“.php”必须只有一个类 类文件必须自动载入,不采用include等 单一入口 1)目录结构 2)代码 入口文件index.php <?php define('BASEDIR',__DIR__); require_once ('/Config/Loader.php'); spl_autoload_register('\\Config\\Loader::autoload'); \Config\Object::te…
类的自动加载 两个函数 __autoload()魔术方法.spl_autoload_register 当php文件中使用了new关键字实例化一个对象时,如果该类没有在本php文件中被定义,将会触发__autoload函数 __autoload 运行到new Animal()时,发现 class Animal没有定义 触发了__autoload函数,该函数引进了Animal.php文件 实例化成功. spl_autoload_register (注意:当文件中同时出现__autoload和spl_…
本篇博客承接上一篇,学习一下Composer实现的PHP的类的自动加载方式.首先说明一下,Composer是PHP针对PHP语言的第三方的依赖管理工具,将工程所用到的依赖文件包含在composer.json文件中,使用composer install命令就可以将所使用对应库或者文件加载进工程里面.下面分两部分介绍composer的基础,分别是composer的依赖管理和自动加载. 依赖管理 在composer出现之前,如果咋PHP项目中需要第三方的依赖文件,则需要程序员将所需要的源代码拷贝进工程…
PSR4是一种自动加载规范,老版本是PSR0,尽管thinkPHP支持PSR4和PSR0的自动加载方式,但是默认也是优先进行PSR4加载,如果失败,再进行PSR0的加载.本篇文章只会讨论PSR4的加载. 代码示例: spl_autoload_register(function ($class) { // 指定项目的命名空间前缀 $prefix = 'Foo\\Bar\\'; // 指定项目的根目录 $base_dir = __DIR__ . '/src/'; // 判断类的前缀是不是上面的命名空…
最近在学习composer,发现从接触PHP到现在已经遇到了三种关于PHP中类的自动加载方式,这其中包括PHP自带的类的自动加载方式.PHP的第三方的依赖管理工具composer的加载方式以及PHP的Yaf框架下的自动加载方式.本篇博客主要是针对PHP5自带的加载方式进行详细介绍,composer和Yaf下类的自动加载将在接下来的时间里分两篇和大家一起学习.       1.手动加载方式 像C和C++等语言,在PHP中需要使用另一个文件中的相关的类.方法时,可以使用include.include…
前面两篇博客分别讲述了PHP自带的类加载和composer中类的自动加载,其实Yaf框架也实现了基于PSR0和PSR4的类的自动加载.根据我对Yaf下类的自动加载方式的理解写下这篇博客.由于接触Yaf框架时间不长,因此如果有不对之处,还望大家不吝指教. 要理解Yaf框架下类的自动加载方式,还是需要PSR0和PSR4规范作为基础,对于PSR0和PSR4的具体规范,本文不做详细解释.Yaf下类的自动加载可以分为全局类和本地类的自动加载.与MVC框架相关的类的自动加载,下面分别做相应的介绍. 一.Ya…
div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfo…
深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演进,而 composer 的出现更是彻底的改变了以往构建 PHP 应用的方式,我们可以根据 PHP 的应用需求混合搭配最合适的 PHP 组件.当然这也得益于…
1.先来介绍一下PSR规范 PHP-FIG,它的网站是:www.php-fig.org.就是这个联盟组织发明和创造了PSR规范,其中自动加载涉及其中两个规范,一个是PSR0,一个是PSR4, PSR0规范已经过时了,官方有提示,现在主要是用PSR4规范定义自动加载标准. 2.PRS4简介 这个 PSR 描述的是通过文件路径自动载入类的指南:它作为对 PSR-0 的补充:根据这个 指导如何规范存放文件来自动载入: 术语「类」是一个泛称:它包含类,接口,traits 以及其他类似的结构: 完全限定类…
PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演进,而 composer 的出现更是彻底的改变了以往构建 PHP 应用的方式,我们可以根据 PHP 的应用需求混合搭配最合适的 PHP 组件.当然这也得益于 PSR 规范的提出. 原文:https://segmentfault.com/a/1190000014948542 大纲: PHP 自动加载功…
在 PHP 代码的顶部你是不是经常看到这样的代码. require 'lionis.php'; require 'is.php'; require 'cool.php'; 如果只是引入几个 PHP 脚本,那还可以接受.那引入成千上万个脚本的时候,爆炸是在所难免的.如果对一个脚本改了个名字,还需要对引入改脚本的每个脚本改名,能不爆炸吗?连打出这段话都怎么绕. 电气时代 在 PHP 电气时代,开始出现了 __autoload 和 spl_autoload_register 函数注册自定义的自动加载策…
composer是一个用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码. 安装composer composer的安装非常的容易 1.下载安装脚本,这里把安装脚本保存为 composer-setup.php [root@localhost composer]# php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.p…
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类 require(__DIR__ .…
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类 require(__DIR__ .…
Composer 的自动加载机制 Composer 提供了四种自动加载方式,分别是 PSR-0.PSR-4.生成 classmap 以及之间包含 files. PSR-0 方式 PSR-0 方式要求目录名和命名空间层层对应,这样导致目录结构会很深,现在已经被官方废弃了. 但是,因为现在的主流 PHP 框架都已经实现了 PSR-0 方式,所以 Composer 仍然向下兼容.按照 PSR-0 的规则,当加载 User\Info 这个类的时候,那么会去寻找 src/User/Info.php,最后这…
一.类自动载入 SPL函数 (standard php librarys) 类自动载入,尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_register('函数名') 函数. spl_autoload_register('函数名') 提供了一种更加灵活的方式来实现类的自动加载(同一个应用中,可以支持任意数量的加载器,比如第三方库中的).因此,不再建议使用 __autoload() 函数,在以后的版本中它可能被弃用. spl_autoload_re…
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeiti, "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, Song, sans-serif } Autoloader 关键词 "必须"("MUST")."一定不可/一定不能…
基于JQuery实现滚动到页面底端时自动加载更多信息 关键代码: 代码如下: var stop=true; $(window).scroll(function(){ totalheight = parseFloat($(window).height()) + parseFloat($(window).scrollTop()); if($(document).height() <= totalheight){ if(stop==true){ stop=false; $.post("ajax.…
本文转自: https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md 关键词 "必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED"). "将会"("SHALL")."不会"("SHAL…
koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader Installation $ npm install koahub-loader Use with koa // 1.model loader var model = loader([ {      root: './app/model',      suffix: '.model.js' }, { …
参考 参考文档:https://www.kancloud.cn/thinkphp/php-fig-psr/3144 参考实例:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md 基本代码规范 PHP代码文件必须以 <?php 或 <?= 标签开始: PHP代码文件必须以 不带BOM的 UTF-8 编码: PHP代码中应该只定义类.函数.常量等声明,或其他会产生 从属…
PSR-0规范 [1]命名空间必须与绝对路径一致 [2]类名首字母必须大写 [3]除去入口文件外,其他“.php”必须只有一个类 [4]php类文件必须自动载入,不采用include等 [5]单一入口 实例源码下载:链接:https://pan.baidu.com/s/1dFjgUnJ 密码:xq07 代码如下: index.php <?php define('BASEDIE',__DIR__); require_once('Config/Loader.php'); spl_autoload_r…
## php自动加载 下面显示例子的文件目录结构图 一.没有使用命名空间的几种实现 test/oneClass.php class oneClass{ public function show(){ echo "这里是oneClass.php的show方法<br/>"; } } test/twoClass.php <?php class twoClass{ public function show(){ echo "这里是twoClass.php的show方…
libs目录下有3个类文件: Test.class.php <?php class Test { public function __construct() { echo "Loading Test.class.php <br>"; } } Test.php <?php class Test { public function __construct() { echo "Loading Test.php <br>"; } } Us…
include 和 require 是PHP中引入文件的两个基本方法.在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 require 堆积.这样的代码既不优雅,执行效率也很低,而且维护起来也相当困难. 为了解决这个问题,部分框架会给出一个引入文件的配置清单,在对象初始化的时候把需要的文件引入.但这只是让代码变得更简洁了一些,引入的效果仍然是差强人意.PHP5 之后,随着 PHP 面向对象支持的完善,__autoload 函…
include 和 require 是PHP中引入文件的两个基本方法.在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 require 堆积.这样的代码既不优雅,执行效率也很低,而且维护起来也相当困难. 为了解决这个问题,部分框架会给出一个引入文件的配置清单,在对象初始化的时候把需要的文件引入.但这只是让代码变得更简洁了一些,引入的效果仍然是差强人意.PHP5 之后,随着 PHP 面向对象支持的完善,__autoload 函…
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的时候, 会通过SPL注册一个自己的Autoloader, 出于性能的考虑, 对于框架相关的MVC类, Yaf Autoloader只以目录映射的方式尝试一次. 具体的目录映射规则如下: 对于控制器 Controller 默认模块下为{项目路径}/controllers/, 否则为{项目路径}/mod…
如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx,其中的一系列文章以非常简单易懂的形式一步步介绍了Entity Framework的一些基本概念和操作方法.一句话,Entity Framework是微软新的数据操作框架,在项目中引入Entity Framework可以极大的方便开发人员完成程序与数据库的各种操作.在早期…
基于psr的规范,使用命名空间和spl_autoload_register()来实现自动加载 文件结构: |--Api |--Account.php |--User.php|--Service |--Login.php |--User.php |--Application.php Application.php <?php use Api\User; use Service\User as User2; class Application{ public static function main…