zoukankan      html  css  js  c++  java
  • PHP 设计模式 笔记与总结(2)开发 PSR-0 的基础框架

    【PSR-0 规范的三项约定】:

    ① 命名空间必须与绝对路径一致

    ② 类名的首字母必须大写

    ③ 除入口文件外,其他".php"必须只有一个类(不能有可执行的代码)

    【开发符合 PSR-0 规范的基础框架】:

    ① 全部使用命名空间

    ② 所有 PHP 文件必须自动载入,不能有 include/require

    ③ 单一入口

    初始目录:

    其中

    index.php 入口文件

    App 放置所有和业务逻辑相关的代码

    Public 放置公共类文件(貌似 Public 会引起冲突,所以文件夹改名为 Common)

    然后在项目文件夹下添加几个文件:

    其中 Common/Loader.php 实现文件的自动载入功能,代码如下:

    <?php
    /*
        实现文件自动载入功能
     */
    namespace Common;
    
    class Loader{
        static function autoload($class){
            //var_dump($class);//string 'CommonObject' (length=13)
            //$file = BASEDIR.'/'.str_replace('\', '/', $class).'.php';
            //var_dump($file);//string 'D:practisephpdesignpsr0/Common/Object.php' (length=45)
            
            require BASEDIR.'/'.str_replace('\', '/', $class).'.php';
        }
    }

    Common/Object.php :

    <?php
    namespace Common;
    
    class Object{
        static function test(){
            echo __METHOD__,'<br>';
        }
    }
    //除了Object类之外,不得有任何可执行的语句

    App/Controller/Home/Index.php:

    <?php
    namespace AppControllerHome;
    
    class Index{
        static function test(){
            echo __METHOD__,'<br>';
        }
    }

    运行入口文件 index.php,则会自动加载 App/Controller/Home/Index.php 和 Common/Object.php

    <?php
    define('BASEDIR',__DIR__); //定义根目录常量
    include BASEDIR.'/Common/Loader.php';
    spl_autoload_register('\Common\Loader::autoload'); //把autoload 注册到php 的自动载入里
    
    CommonObject::test();
    AppControllerHomeIndex::test();

    页面输出:

    CommonObject::test
    AppControllerHomeIndex::test
  • 相关阅读:
    字符串数组 去重 研究
    监听 dom 改变
    清除body 不改变路径 页面信息加载第三方
    使用img标签实现xss的常见方法
    禁止ios浏览器页面上下滚动 (橡皮筋效果)
    遍历 Request.Form.Keys
    selenium-java之使用浏览器打开网页举例
    docker搭建redis
    docker镜像无法删除 Error:No such image:xxxxxx
    连接查询SQL说明举例
  • 原文地址:https://www.cnblogs.com/dee0912/p/4403933.html
Copyright © 2011-2022 走看看