Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Designmuster eins: Namespace, automatische Ladeklasse, PSR-0-Codierungsspezifikation

PHP-Designmuster eins: Namespace, automatische Ladeklasse, PSR-0-Codierungsspezifikation

不言
Freigeben: 2023-03-23 11:58:01
Original
1831 Leute haben es durchsucht

本篇文章介绍的内容是php设计模式一之命名空间、自动加载类、PSR-0编码规范 ,现在分享给大家,有需要的朋友可以参考一下

一、命名空间:解决在生产环境中多人协同开发时出现类名或函数名冲突的问题;
test1.php

<?php
namespace Test1;
function test(){
    echo "Test1命名空间下的test()方法";
}
?>
Nach dem Login kopieren

test2.php

<?php
namespace Test2;
function test(){
    echo "Test2命名空间下的test()方法";
}
?>
Nach dem Login kopieren

test.php

<?php
require_once(&#39;test1.php&#39;);
require_once(&#39;test2.php&#39;);
Test1\test();    //调用Test1命名空间下的test()方法
Test2\test();
?>
Nach dem Login kopieren

二、自动加载类:解决在项目中引入过多的依赖类文件问题;
demo1.php

<?php
class Demo1{
    static function test(){
        echo "Demo1类中的test()静态方法";
    }
}
?>
Nach dem Login kopieren

demo2.php

<?php
class Demo2{
    static function test(){
        echo "Demo2类中的test()静态方法";
    }
}
?>
Nach dem Login kopieren

demo.php

<?php
//php5.3+版本,spl_autoload_register()自动注册加载类。参数为某个自定义的函数
spl_autoload_register(&#39;autoload&#39;);
//自定义一个自动加载函数,$class为类名,无须传参。spl_autoload_register()方法自动认别
function autoload($class) {
    require_once(__DIR__.&#39;/&#39;.$class.&#39;.php&#39;);
}
Demo1::test();
Demo2::test();
//php5.3版本以下,使用__autoload()方法
function __autoload($class) {
    require_once(__DIR__.&#39;/&#39;.$class.&#39;.php&#39;);
}
?>
Nach dem Login kopieren

三、PSR-0编码规范
1)、必须使用命名空间并且与文件的绝对路径一致;
2)、类名首字母须大写且与文件名保持一致;
3)、除入口文件以外其他php文件必须只有一个类且没有可执行的代码;

四、基于PSR-0编码规范编写一套基础框架
1)、目录结构

App            存放业务逻辑及功能实现的代码
|--Controller
    |--Home
       |--Index.php
Frame          存放与业务逻辑无关的代码,框架部分
|--Autoloader.php  自动加载类
index.php       单一入口文件
Nach dem Login kopieren

Autoloader.php

<?php
namespace Frame;
class Autoloader
{
    static function autoload($class)
    {
        require_once(BASEDIR.&#39;/&#39;.str_replace(&#39;\\&#39;,&#39;/&#39;,$class).&#39;.php&#39;);
    }
}
?>
Nach dem Login kopieren

App/Controller/Home/Index.php

<?php
namespace App\Controller\Home;

class Index
{
    static function test()
    {
        echo "Home控制器下的test()静态方法";
    }
}
?>
Nach dem Login kopieren

index.php

<?php
define(&#39;BASEDIR&#39;,__DIR__);
require_once(BASEDIR.&#39;/Frame/Autoloader.php&#39;);
spl_autoload_register(&#39;Frame\\Autoloader::autoload&#39;);
App\Controller\Home\Index::test();

//输出结果:Home控制器下的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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage