php 设计模式准备篇

php中文网
发布: 2016-06-23 13:14:22
原创
1205人浏览过

要了解设计模式 首先我们要先了解 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的架构处理了

创客贴设计
创客贴设计

创客贴设计,一款智能在线设计工具,设计不求人,AI助你零基础完成专业设计!

创客贴设计 51
查看详情 创客贴设计

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在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号