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

<?php
/**
* @Author: Martin
* @Support: Martin
* @Last Modified by: Martin
*/
namespace Order; const STR = 'order list<br />'; function detail()
{
return 'order detail<br />';
}
function call_by_self()
{
return 'call by self<br />';
}
/**
*
*/
class Orderlist
{ public function __construct()
{
echo 'Class NameSpace is "', __NAMESPACE__, '"';
}
public function show_list()
{
for ($i = 0; $i < 5; $i++) {
echo "<ul><li>this is order$i<br />";
//内部直接访问
echo detail();
echo "</li></ul>";
}
}
}
//内部通过命名空间访问
echo \Order\call_by_self();
index.php 内容为:
<?php
/**
* @Author: Martin
* @Support: Martin
* @Last Modified by: Martin
*/
namespace index;
include_once('Order.php'); //外部访问class 实例化即可使用
use Order\Orderlist;
$orderlist = new orderlist;
$orderlist->show_list(); //外部访问静态变量和function 直接访问
use Order;
echo Order\STR;
echo Order\detail();
打印结果为:

User.php 内容为:
namespace User;
//直接载入Order
#include('Order.php');
//自动载入
spl_autoload_register(function($className) {
var_dump($className);
});
spl_autoload_call('Order');
打印结果为:

SPL自动载入函数包含如下:

修改User.php 如下:
namespace User; //直接载入Order
#include('Order.php');
//自动载入
define('LIB_DIR', __DIR__ . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR);
spl_autoload_register(function ($class) {
$path = LIB_DIR . $class . '.lib.php';
include ($path);
}); spl_autoload_call('Order');
use Order; $orderList = new \Order\Orderlist();
$orderList->show_list();
打印结果为:

PHP命名空间和自动加载初探的更多相关文章
- 【php】命名空间 和 自动加载的关系
目的 本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧 命名空间(n ...
- PHP命名空间与自动加载类详解
本文实例讲述了PHP命名空间与自动加载类.分享给大家供大家参考,具体如下: 今天我要给大家介绍的是PHP的命名空间 和 自动加载类 我先简单的分开演示 在放在一起 大家请看:什么是自动加载类? 想必大 ...
- PHP 命名空间以及自动加载(自动调用的函数,来include文件)
这篇文章的目的是记录 1. php中的自动加载函数 __autoload(), 和 spl_autoload_register()函数, 2 .php中命名空间的使用. 一.当不使用命名空间的时候 a ...
- PHP 命名空间与自动加载机制
include 和 require 是PHP中引入文件的两个基本方法.在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 requ ...
- PHP 命名空间与自动加载机制介绍
include 和 require 是PHP中引入文件的两个基本方法.在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 requ ...
- PHP 命名空间和自动加载
PHP 命名空间 php5.3 之后引入了命名空间的特性,从本质上讲,命名空间就是一个容器,你可以将类.函数和变量放在其中,在命名空间中,你可以无条件地访问这些项,在命名空间之外,必须导入或引用命名空 ...
- php使用命名空间时自动加载机制
命名空间主要为了解决用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突.不过并不是你定义了使用命名空间的类,就可以在任何地方随意使用了,需要在程序运行时将定义命名空间的类文 ...
- 2)thinkphp的带有命名空间的自动加载机制
(1)为啥thinkphp里面的文件要是写你的命名空间,要与你的路径一样,因为在thinkphp实现自动加载机制的原理,就是靠的你的命名空间对应这个路径,然后自动加载机制通过这个路径找到你的类文件,然 ...
- phper必知必会之类库自动加载的七种方式(三)
## php自动加载 下面显示例子的文件目录结构图 一.没有使用命名空间的几种实现 test/oneClass.php class oneClass{ public function show(){ ...
随机推荐
- 【u207】最小值
Time Limit: 1 second Memory Limit: 128 MB [问题描述] N个数排成一排,你可以任意选择连续的若干个数,算出它们的和.问该如何选择才能使得和的绝对值最小. 如: ...
- php如何实现读取网易有道词典输出单词的xml格式并且转化为html形式
php实现读取网易有道词典输出单词的xml格式并且转化为html形式 一.总结 一句话总结:将xml中的文件用preg_match_all读出来,然后组合成想要的数据 1.explode除了爆炸的意思 ...
- NET C#转Java
NET C#转Java .NET C#转Java没那么难,都是面向对象的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只 ...
- 数码测色计获取UIColor的RGB
1.打开电脑数码测色计 2.鼠标移动到需要的颜色上 3.获取相应RGB值: [UIColor colorWithRed:204.f/255.f green:0.f/255.f blue:212.f/2 ...
- 几种tab切换尝试 原生js
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 【序列操作III】线段树
题目描述 给出序列 a1,a2,…an(0≤ai≤109),有关序列的四种操作: 1. al,al+1,…,ar(1≤l≤r≤n)加上 x(-103≤x≤103) 2. al,al+1,…,ar(1≤ ...
- webpack run dev后并没有生成dist目录,但是浏览器里却读取了dist里的build.js?
最近想看看现在做的React项目用的脚手架,看了下webpack的配置,尝试修改一些东西看看输出结果,结果允许npm run dev发现没有输出目录,怎么回事呢.又安装了vue官方提供的webpack ...
- XSS攻击之基础篇:HTML标签与字符串的渲染
<body> XSS攻击之基础篇:HTML标签与字符串的渲染 测试 <div class="a1"> </div> <div class= ...
- mac在终端打开应用程序
今天研究了下mac终端的启动流程.以下以sublime为例,介绍怎么在mac的终端中加入app启动方法. 方法1 :使用"open -a /Applications/Sublime\ Tex ...
- oc面试攻略
原文出自:http://mobile.51cto.com/iphone-402619.htm 1.Object-C有多继承吗?没有的话用什么代替?cocoa 中所有的类都是NSObject 的子类 多 ...