要了解设计模式 首先我们要先了解 php的命名空间和类的自动载入的功能
下面我们来说一下
命名空间
概念缘由:比如一个a.php的文章 但是我们需要两个 此时同一个目录下不可能存在两个a.php 那么我们可以放到my/home 和 my/home1的目录下 此时命名空间就有了它的意义
那么空间即为my/home/a.php
立即学习“PHP免费学习笔记(深入)”;
namespace my ame;
demo
<?php //file a.phpnamespace my/home;const test = ’Atest’; function test() { return __FUNCTION__; }class Test{ public function __construct(){ return __METHOD__; }}?>那么下面就是自动加载的问题了
原本最为简单的自动加载是
function __autoload($class) { $dir = ’./’; set_include_path(get_include_path().PATH_SEPARATOR.$ids_dir); $class = str_replace(’’, ’/’, $class) . ’.php’; require_once($class); }但是用__autoload()这种方法已经out了
现在我们用的更多的是spl_autoload_register(优势)
面试可能设计到
对比:
1。spl_autoload_register可以进行多次的写注册加载函数,谁先注册谁就先调用,但是_autoload()只能调用一次
2.spl_autoload_register可以catch错误
3.既然可以注册那么我们也可以用spl_autoload_unregister()解除注册。
通过上面的学习我们可以进行一个psr的架构处理了
psr概念:
1、PSR-0规范
[1]命名空间必须与绝对路径一致
[2]类名首字母必须大写
[3]除去入口文件外,其他“.php”必须只有一个类
[4]php类文件必须自动载入,不采用include等
[5]单一入口
2、案例
[1]目录结构
[2]源码
index.php
<?phpdefine('BASEDIE',__DIR___);require_once('/Config/Loader.php');spl_autoload('\Config\Loader.php::autoload');ConfigObject::test();AppHomeIndex::test();Config/Object.php
<?phpnamespace Config;class Object{ static function test(){ echo "nihao"; }}Config/Loader.php
<?phpnamespace Config;class Loader{ static function autoload($class) { require_once(BASEDIE.'/Config/'.str_replace('\','/',$class).'.php'); }}App/Home/Index.php
<?phpnamespace AppHome;class Index{ static function test(){ echo "ceshixinxi"; }}<br /><br />
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号