本篇文章介绍的内容是php设计模式一之命名空间、自动加载类、PSR-0编码规范 ,现在分享给大家,有需要的朋友可以参考一下
一、命名空间:解决在生产环境中多人协同开发时出现类名或函数名冲突的问题;
test1.php
1 2 3 4 5 6 | <?php
namespace Test1;
function test(){
echo "Test1命名空间下的test()方法" ;
}
?>
|
Nach dem Login kopieren
test2.php
1 2 3 4 5 6 | <?php
namespace Test2;
function test(){
echo "Test2命名空间下的test()方法" ;
}
?>
|
Nach dem Login kopieren
test.php
1 2 3 4 5 6 | <?php
require_once ('test1.php');
require_once ('test2.php');
Test1\test();
Test2\test();
?>
|
Nach dem Login kopieren
二、自动加载类:解决在项目中引入过多的依赖类文件问题;
demo1.php
1 2 3 4 5 6 7 | <?php
class Demo1{
static function test(){
echo "Demo1类中的test()静态方法" ;
}
}
?>
|
Nach dem Login kopieren
demo2.php
1 2 3 4 5 6 7 | <?php
class Demo2{
static function test(){
echo "Demo2类中的test()静态方法" ;
}
}
?>
|
Nach dem Login kopieren
demo.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php
spl_autoload_register('autoload');
function autoload( $class ) {
require_once (__DIR__.'/'. $class .'.php');
}
Demo1::test();
Demo2::test();
function __autoload( $class ) {
require_once (__DIR__.'/'. $class .'.php');
}
?>
|
Nach dem Login kopieren
三、PSR-0编码规范
1)、必须使用命名空间并且与文件的绝对路径一致;
2)、类名首字母须大写且与文件名保持一致;
3)、除入口文件以外其他php文件必须只有一个类且没有可执行的代码;
四、基于PSR-0编码规范编写一套基础框架
1)、目录结构
1 2 3 4 5 6 7 | App 存放业务逻辑及功能实现的代码
|--Controller
|--Home
|--Index.php
Frame 存放与业务逻辑无关的代码,框架部分
|--Autoloader.php 自动加载类
index.php 单一入口文件
|
Nach dem Login kopieren
Autoloader.php
1 2 3 4 5 6 7 8 9 10 | <?php
namespace Frame;
class Autoloader
{
static function autoload( $class )
{
require_once (BASEDIR.'/'. str_replace ('\\','/', $class ).'.php');
}
}
?>
|
Nach dem Login kopieren
App/Controller/Home/Index.php
1 2 3 4 5 6 7 8 9 10 11 | <?php
namespace App\Controller\Home;
class Index
{
static function test()
{
echo "Home控制器下的test()静态方法" ;
}
}
?>
|
Nach dem Login kopieren
index.php
1 2 3 4 5 6 7 8 | <?php
define('BASEDIR',__DIR__);
require_once (BASEDIR.'/Frame/Autoloader.php');
spl_autoload_register('Frame\\Autoloader::autoload');
App\Controller\Home\Index::test();
?>
|
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonPHP-Designmuster eins: Namespace, automatische Ladeklasse, PSR-0-Codierungsspezifikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!