PHP 类的命名空间 和自动载入

PHP 类的自动载入有两种方法,__autoload() 和 spl_autoload_register() ,就是在PHP代码中new一个类的时候,会自动触发,将类的类名包括命名空间作为参数传进入方法里,在方法里可根据命名空间和类名准确找到类文件,从而require或者inlcude进来。菜鸟一枚,作为备忘

<?php
function auto($class){
        //$class = A\B\E;
        /** 命名空间的自动载入 **/
        $class_path = explode("\\",$class);
        $file = __DIR__ . ‘/‘ ;
        foreach($class_path as $c){
           $file .= $c . ‘/‘;
        }
        $file = rtrim($file,"/");
        $file .= ‘.php‘;
        var_dump($file);exit;
}
spl_autoload_register(‘auto‘);
use A\B\E;
$e = new E();
echo ‘hi‘;
/*******输出*******/
string(32) "/www/test_php_autoload/A/B/E.php"

原文地址:https://www.cnblogs.com/undefined-j/p/10399374.html

时间: 2024-10-10 18:06:08

PHP 类的命名空间 和自动载入的相关文章

php设计模式--命名空间与自动载入

关于命名空间: 最早的php是没有命名空间的概念的,这样不能存在相同名称的类或者函数,当项目变大了之后,产生冲突的可能性就高了,代码量也会变大,为了规划,从php5.3开始对命名空间就支持了. 说明代码: test1.php<?php //声明命名空间 namespace Test1; function test(){ echo "test1<br/>"; } test2.php <?php //声明命名空间 namespace Test2; function

命名空间与自动载入

1 <?php 2 namespace utils; 3 class Loader 4 { 5 static function autoload($class) 6 { 7 require BASEDIR."/".str_replace("\\", "/", $class).".php"; 8 } 9 } 1 <?php 2 use Design\AbstractFactory\IPadFactory; 3 4 d

PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入

① PHP 面向对象高级特性 ② 11 种 PHP 设计模式 ③ PSR-0,Composer,Phar 等最流行的技术 目标是掌握 PHP 各类设计模式,以及具备设计纯面向对象框架和系统的能力 [命名空间] 早期 php 没有命名空间的概念,所有的代码可以被认为是在同一个命名空间内运行,因此不能出现名称相同的类或函数: php 5.3 增加了命名空间的概念. 例:加入一个项目下有 3 个文件: test1.php: <?php function test(){ echo __FILE__; }

PHP——大话PHP设计模式——命名空间和类的自动载入

开发工具:phpstorm phpstudy 命名空间: 类的自动载入

php设计模式 一 (命名空间 类自动载入 PSR标准)

命名空间 可以将 PHP 命名空间与文件系统作一个简单的类比.在文件系统中访问一个文件有三种方式: 1 相对文件名形式如foo.txt.它会被解析为 currentdirectory/foo.txt,其中 currentdirectory 表示当前目录.因此如果当前目录是 /home/foo,则该文件名被解析为/home/foo/foo.txt. 2 相对路径名形式如subdirectory/foo.txt.它会被解析为 currentdirectory/subdirectory/foo.txt

简单概述PHP的命名空间及其在自动载入上的应用

php自5.3以后引入了命名空间namespace这一特性使得php在面向对象设计的过程中更加规范清晰,同时在框架的架构中自动载入模式也完全尽齐用来提高框架自身的性能--按需载入 无命名空间声明其实为在根命名空间下 <?php /** * 命名空间为Project * 则类的完整名为 Project\Web 而不是Web */ namespace Project; class Web { function __construct() { echo __NAMESPACE__ . '<br/&g

【25】工具类实现自动载入与类

上一节中我们已经创建了相应的目录,但是我们发现我们创建的类并不能成功的跑起来,这是为什么呢?这主要是因为我们载入的类文件的位置不对造成的,我们之前是根据类名载入的是控制器,所以这里需要进行一下判断: private static function _autoload($className){ switch (true) { //判断是控制器 //Controller case strlen($className)>10 && substr($className, -10)=='Con

PHP命名空间与自动加载类详解

本文实例讲述了PHP命名空间与自动加载类.分享给大家供大家参考,具体如下: 今天我要给大家介绍的是PHP的命名空间 和 自动加载类 我先简单的分开演示 在放在一起 大家请看:什么是自动加载类? 想必大家都应该知道__autoload 这个魔术方法 $db = new DB();function __autoload($className){echo $className;exit();//在这个里面引用类} 在运用这个类只能加载一次 ,在很多时候我们要引入的不止一个类这个时候怎么办呢! 牛逼的p

PHP命名空间和自动加载初探

参考资料: PHP手册-语言参考:http://php.net/manual/zh/language.namespaces.php 概要: 1. 声明了命名空间之后,下面的const, function, class都会划归到该命名空间. 2. 只有声明过命名空间的PHP 文件才能加载有命名空间的PHP文件. 3. PHP 5.3 及以上才能使用命名空间 名词: 关键字:namespace 用来声明 本PHP文件的命名空间 常量:__NAMESPACE__ 用来返回当前命名空间的名称 默认为空字