PHP之依賴管理composer

科技小能手發表於2017-11-12

當你想著鞋墊自己的東西的時候,或者說是整理下過去用過的工具,程式碼,這時候你就會想到看看github上比較好的程式碼,這裡主要講PHP的


估計在win上安裝composer比較麻煩,或者不好用,但是你想用本地的wamp,那麼你可以用虛擬機器安裝好composer,然後就可以下載你需要的。這裡以我正在使用的monolog日誌系統


composer require monolog/monolog

這樣就會在當前目錄生成和下載

vender就是統一的第三方外掛的資料夾,composer.json就是配置檔案,composer會根據這個去下載第三方,composer.lock會限制composer不會更新你安裝過外掛的版本,保持你們開發的穩定性


現在來說說monolog,本來就是安裝PHP規範寫的,文件也寫的比較清楚,不過文件看完,你瞭解了設計思路,但是具體的應用需要自己在使用中慢慢發掘或者專門去測試一下


上程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
include "vendor/autoload.php";
use Monologlogger;
use MonologHandlerStreamHandler;
use MonologFormatterLineFormatter;
 
// include "vendor/monolog/monolog/tests/Monolog/LoggerTest.php";
//設定格式的地方
$dateFormat "Y-n-j, g:i:a";
$output "%datetime% >  %channel%.%level_name% > %message% %context% %extra%
"
;
$formatter new LineFormatter($output$dateFormat);
 
$log new Logger(`myApp`);
//$log = new MonologLogger("name");
$bug_log new StreamHandler(`logs/development.log`,logger::DEBUG);
$bug_log->setFormatter($formatter);
$log->pushHandler($bug_log);
$log->pushHandler(new StreamHandler(`logs/production.log`,logger::WARNING));
 
$error array(`12`=>`jack`,`13`=>`marry`);
$error_string `a error`;
//$log->debug($error_string);
 
//$log->warning(`This is a warning. No caring now`);
 
//$log->info(`Where Can I see you?`);
 
// $logtest = new LoggerTest();
// $logtest->testGetName();
$log->addInfo(`Adding a new user`array(`username` => `Seldaek`));
 
$log->pushProcessor(function ($record) {
    $record[`extra`][`dummy`] = `Hello world!now I cannot see the world outside.`;
 
    return $record;
});
//withName是單獨複製,換個名字記錄
$securityLogger $log->withName(`security`);
$securityLogger->info(`我涉及到的都是安全問題`);


針對資料庫的寫法

上程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use MonologLogger;  
use MonologHandlerAbstractProcessingHandler;  
   
class PDOHandler extends AbstractProcessingHandler  
{  
    private $initialized = false;  
    private $pdo;  
    private $statement;  
   
    public function __construct(PDO $pdo$level = Logger::DEBUG, $bubble = true)  
    {  
        $this->pdo = $pdo;  
        parent::__construct($level$bubble);  
    }  
   
    protected function write(array $record)  
    {  
        if (!$this->initialized) {  
            $this->initialize();  
        }  
   
        $this->statement->execute(array(  
            `channel` => $record[`channel`],  
            `level` => $record[`level`],  
            `message` => $record[`formatted`],  
            `time` => $record[`datetime`]->format(`U`),  
        ));  
    }  
   
    private function initialize()  
    {  
        $this->pdo->exec(  
            `CREATE TABLE IF NOT EXISTS monolog `  
            .`(channel VARCHAR(255), level INTEGER, message LONGTEXT, time INTEGER UNSIGNED)`  
        );  
        $this->statement = $this->pdo->prepare(  
            `INSERT INTO monolog (channel, level, message, time) VALUES (:channel, :level, :message, :time)`  
        );  
   
        $this->initialized = true;  
    }



願大家一路順風,更多的學習更多優秀的程式碼,在使用完,休閒的時候看看人家的思路


願法界眾生,皆得安樂

本文轉自 jackdongting 51CTO部落格,原文連結:http://blog.51cto.com/10725691/1955540


相關文章