• 技术文章 >后端开发 >php教程

    php设计模式一之命名空间、自动加载类、PSR-0编码规范

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

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

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

    test2.php

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

    test.php

    <?php
    require_once('test1.php');
    require_once('test2.php');
    Test1\test();    //调用Test1命名空间下的test()方法
    Test2\test();
    ?>

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

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

    demo2.php

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

    demo.php

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

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

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

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

    Autoloader.php

    <?php
    namespace Frame;
    class Autoloader
    {
        static function autoload($class)
        {
            require_once(BASEDIR.'/'.str_replace('\\','/',$class).'.php');
        }
    }
    ?>

    App/Controller/Home/Index.php

    <?php
    namespace App\Controller\Home;
    
    class Index
    {
        static function test()
        {
            echo "Home控制器下的test()静态方法";
        }
    }
    ?>

    index.php

    <?php
    define('BASEDIR',__DIR__);
    require_once(BASEDIR.'/Frame/Autoloader.php');
    spl_autoload_register('Frame\\Autoloader::autoload');
    App\Controller\Home\Index::test();
    
    //输出结果:Home控制器下的test()静态方法
    ?>

    以上就是php设计模式一之命名空间、自动加载类、PSR-0编码规范 的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:设计模式 php 加载
    上一篇:PHP 的会话控制 下一篇:PHP register_shutdown_function函数的解析
    大前端线上培训班

    相关文章推荐

    • PHP中的命名空间定义与使用(实例详解)• PHP中clone关键字和__clone()方法的使用(实例详解)• 带你分清类中的构造函数与析构函数• 五分钟带你了解PHP中的魔术方法(实例详解)• 怎样去搞定PHP类的继承?(总结分享)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网