Maison >développement back-end >tutoriel php >Matériel vidéo sur la création de votre propre framework PHP à partir de zéro

Matériel vidéo sur la création de votre propre framework PHP à partir de zéro

黄舟
黄舟original
2018-05-31 10:45:183640parcourir

你觉得Thinkphp框架很不错?Laravel很优雅?Yii很稳定?CI很高效?哼哼,其实你自己开发的才是最最好用最最适合你的框架!

Matériel vidéo sur la création de votre propre framework PHP à partir de zéro

课程播放地址:http://www.php.cn/course/276.html

该老师讲课风格:

讲课亲切自然,朴实无华,没有矫揉造作,也不刻意渲染,而是娓娓而谈,细细道来,师生之间在一种平等、协作、和谐的气氛下,进行默默的情感交流,将对知识的渴求和探索融于简朴、真实的教学情景之中,学生在静静的思考、默默的首肯中获得知识

本视频中较为难点是配置加载类(1)了:

一、配置加载类

要想做配置加载类我们要先了解为什么要用到配配置加载类

当我们需要改变某一项配置的时候我们不需要在功能中找到所有的配置进行修改,而是直接在一个单独的配置文件中修改,这样可以更好的优化我们的框架,用起来才会更舒服。

比如说我们的数据库配置

我们可以做一个单独的数据库配置文件放到config文件中

<?php   
  
    return array(  
        &#39;DSN&#39; => &#39;mysql:host=localhost;dbname=test&#39;,  
        &#39;USERNAME&#39; => &#39;root&#39;,  
        &#39;PASSWD&#39; => &#39;root&#39;  
        )  
 ?>

接下来让我们加载配置文件

public function __construct(){  
    $database = conf::all(&#39;database&#39;);  
    try {  
        parent::__construct($database[&#39;DSN&#39;],$database[&#39;USERNAME&#39;],$database[&#39;PASSWD&#39;]);  
    } catch (\PDOException $e) {  
        p($e->getMessage());  
    }  
}

这样的话,我们只需要修改配置文件就可以修改我们的数据库连接岂不是很方便

二、日志类

日志类是所有框架中都必不可少的功能,日志类可能是存在数据库中,也可以存在存在文件中。

在config文件中创建log.PHP配置文件,里面放上文件的存储方式和存储路径

<?php   
  
    return array(  
        &#39;DRIVE&#39; => &#39;file&#39;,  
        &#39;OPTION&#39; => array(  
            &#39;PATH&#39; => LHY.&#39;/log/&#39;  
            )  
        );  
 ?>

在lib文件中创建一个log文件,再从log文件中创建一个file.php文件,在file.php文件中实现将日志存入文件

<?php   
namespace core\lib\drive\log;  
  
use core\lib\conf;  
class file  
{  
    public $path;#日志存储路径  
    public function __construct(){  
        $conf = conf::get(&#39;OPTION&#39;,&#39;log&#39;);  
        $this->path = $conf[&#39;PATH&#39;];  
    }  
    public function log($message,$file){  
        $path = $this->path;  
        // echo $this->path.date(&#39;Y-m-d&#39;);die;  
        if(!is_dir($this->path.date(&#39;Y-m-d&#39;))){  
            mkdir($this->path.date(&#39;Y-m-d&#39;),0777,true);  
        }  
        $message = date(&#39;Y-m-d H:i:s&#39;).$message;  
        return file_put_contents($this->path.date(&#39;Y-m-d&#39;).&#39;/&#39;.$file.&#39;.php&#39;,json_encode($message).PHP_EOL,FILE_APPEND);  
    }  
}  
  
 ?>

在lib文件中创建log.php类文件

<?php   
namespace core\lib;  
use core\lib\conf;  
  
class log  
{  
    static $class;  
    /** 
     * 1.确定日志存储方式 
     * 
     * 2.写日志 
     */  
    static public function init(){  
        //确定存储方式  
        $drive = conf::get(&#39;DRIVE&#39;,&#39;log&#39;);  
        $class = &#39;\core\lib\drive\log\\&#39;.$drive;  
        self::$class =  new $class;  
    }  
    static public function log($message,$file){  
        //core\lib\drive\log\log;  
        self::$class->log($message,$file);  
    }  
}  
  
 ?>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn