国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP|組件、依賴管理和自動加載

XBaron / 3409人閱讀

摘要:如果需要下載新版組件,需要使用自動加載組件我們只需在文件的頂部使用函數導入創建的自動加載器創建的自動加載器就是名為的文件。如果實例化虛構的類,會自動加載文件。

組件

PHP組件目錄Packagist

https://packagist.org

使用組件

Packagist是查找PHP組件的地方,Composer是安裝PHP組件的工具

https://getcomposer.org

安裝:

curl -sS https://getcomposer.org/installer | php

使用curl下載Composer的安裝腳本,使用PHP執行安裝腳本,最后在當前目錄中創建composer.phar文件

有用的一條命令:

sudo mv composer.phar /usr/local/bin/composer

把composer編程可執行的二進制文件:

sudo chmod +x /usr/local/bin/composer

~/.bash_profile中添加下面這行代碼:

PATH=/usr/local/bin:$PATH

命令行中執行composer. Bingo

安裝組件

進入項目的最頂層目錄,然后為每個PHP組件執行一次:

composer require vendor/package

這個命令可以安裝這個組件的最新穩定版。

執行命令的接軌哦可以在項目最頂層目錄中新建或更新的composer.json文件中查看。執行這個命令后還會創建一個composer.lock文件。

composer.lock

這個文件會列出項目使用的所有PHP組件,以及組件的具體版本號。這其實是鎖定了項目,讓項目只能使用具體版本的PHP組件。

Why? 如果有composer.lock文件,Composer會下載這個文件中列出的具體版本,而不管Packagist中可用的最新八本是多少。所以,應該把composer.lock文件納入版本控制,讓大家使用相同版本的PHP組件。

composer.lock有個缺點,composer install命令不會安裝避其中列出的版本號新的版本。如果需要下載新版組件,需要使用

composer update
自動加載PHP組件

我們只需在scan.php文件的頂部使用require函數導入Composer創建的自動加載器:


Composer創建的自動加載器就是名為autoload.php的文件。這樣我們就可以在項目中實例化任何組件。

舉個例子:編寫scan.php

通過Guzzle和CSV組件編寫scan.php腳本。

options($csvRow[0]);
        
        if ($httpResponse->getStatusCode >= 400) {
            throw new Exception();
        }
    } catch (Exception $e) {
        echo $csvRow[0] . PHP_EOL;
    }
}

實例化組件時,這里使用了GuzzleHttp & LeagueCsv命名空間。

執行:

php scan.php urls.csv

使用PHP編寫命令行腳本

http://php.net/manual/wrappers.php.php

http://php.net/manual/reserved.variables.argv.php

http://php.net/manual/reserved.variables.argc.php

Composer和私有庫

Composer可以管理放在需要認證的倉庫中的私有組件。

執行composer install or composer update時,如果需要認證,Composer會提醒你。

Composer還會詢問你是否把倉庫的認證保存在本地的auth.json文件中。

auth.json:

{
    "http-basic": {
        "example.org": {
            "username": "",
            "password": ""
        }
    }
}

如果不想等Composer向你詢問認證憑據,使用下述命令:

composer config http-basic.example.org your-username your-password

解釋一下:http-basic告訴Composer,我們要為指定的域名天假認證信息,example.org是主機名。這個命令會在當前項目中的auth.json文件里保存憑據。

創建組件 文件系統的組織方式
src/
tests/
composer.json
README.md
CONTRIBUTING.md
LICENSE
CHANGELOG.md

Demo: https://github.com/thephpleague/skeleton

composer.json

舉個例子:

{
    "name": "vendor/package",
    "description": "",
    "keywords": ["", ""],
    "homepage": "http://example.org",
    "license": "MIT",
    "authors": [
        {
            "name": "",
            "homepage": "",
            "role": "Developer"
        }
    ],
    "support": {
        "email": ""
    },
    "require": {
        "php": ">=5.4.0",
        "vendorX/packageX": "~5.0"
    },
    "require-dev": {
        "vendorY/packageY": "~4.3"
    },
    "suggest": {
        "league/csv": "~6.0"
    },
    "autoload": {
        "psr-4": {
            "namespacesubnamespace": "src/"
        }
    }
}

其中:

support的對象是建議安裝的組件,以防與其他組件合作時需要。

autoload: 在PSR-4中,我們要把組件的命名空間前綴與相對組件根目錄的文件系統路徑對應起來。

如果實例化虛構的namespacesubnamespaceUrlScanner類,Composer會自動加載src/Url/Scanner.php文件。

Demo: http://getcomposer.org

README

組件的名稱和描述

安裝說明

用法說明

測試說明

貢獻方式說明

支持資源

作者信息

軟件許可證

實現組件

Demo

urls = $urls;
        $this->httpClient = new GuzzleHttpClient();
    }
    
    public function getInvalidUrls()
    {
        $invalidUrls = [];
        foreach ($this->urls as $url) {
            try {
                $statusCode = $this->getStatusCodeForUrl($url);
            } catch (Exception $e) {
                $statusCode = 500;
            }
            
            if ($statusCode >= 400) {
                array_push($invalidUrls, [
                    "url" => $url,
                    "status" => $statusCode
                ]);
            }
        }
        
        return $invalidUrls;
    }
    
    protected function getStatusCodeForUrl($url)
    {
        $httpResponse = $this->httpClient->options($url);
        
        return $httpResponse->getStatusCode();
    }
}
提交

提交代碼到自己的github上

提交組件到 https://packagist.org/packages/submit

可以通過設置鉤子,每次更新組件的repo時,通知Packagist: https://packagist.org/profile/

使用: composer require vendor/package

getInvalidUrls());

參考

Modern PHP

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21647.html

相關文章

  • php管理依賴關系工具composer學習筆記

    摘要:首先支持下黃老師的視頻網站轉型這篇的學習筆記也是根據他的視頻教程寫的,一共十集,講解的很簡單感興趣的同志們可以上他視頻網站購買視頻,網站地址放在文末我的博客作用自動安裝所需要的模塊,自動加載管理項目,發布到網上上去是默認的加載組件地址安裝下 首先支持下黃老師的視頻網站轉型這篇composer的學習筆記也是根據他的視頻教程寫的,一共十集,講解的很簡單感興趣的同志們可以上他視頻網站購買視頻...

    CoyPan 評論0 收藏0
  • Swoft| Swoft 框架組件化改造

    摘要:框架組件化改造框架從單體應用到組件化改造的架構升級之路經過一年多的開發框架功能越來越完善也越來越復雜初創時期的單體應用已經無法支撐項目的快速發展于是開發組在年前為版制定了組件化改造的重構方案內容速覽組件化原理包管理基礎知識組件化方案來 date: 2018-3-21 13:22:16title: Swoft| Swoft 框架組件化改造description: Swoft 框架從單體應...

    desdik 評論0 收藏0
  • 【Laravel】Laravel 框架關鍵技術解析·讀書筆記(一)

    摘要:判斷是否存在構造函數,不存在直接實例化,存在則通過來獲取輸入函數,并有相應的方法解決依賴參數問題,實現依賴注入。 Laravel 框架關鍵技術解析·讀書筆記(一) 第一章 入口文件 請求訪問的入口文件,主要完成幾部分工作,分別是: 自動加載函數的添加 服務器實例化與服務注冊 路由加載 請求實例化與路由分發 相應生成與發送 其中,自動加載函數用于包含引用文件,改文件是composer...

    CocoaChina 評論0 收藏0
  • PHPer面試指南-Laravel 篇

    摘要:簡述的生命周期采用了單一入口模式,應用的所有請求入口都是文件。分發請求一旦應用完成引導和所有服務提供者都注冊完成,將會移交給路由進行分發。此外,由于對動態方法的獨特用法,也使測試起來非常容易。 本書的 GitHub 地址:https://github.com/todayqq/PH... Laravel 作為現在最流行的 PHP 框架,其中的知識較多,所以單獨拿出來寫一篇。 簡述 La...

    alaege 評論0 收藏0
  • 2017年PHP程序員未來路在何方

    摘要:目前來看等語言還難以企及和。作為一個資深的開發者,在技術上給各位程序十點未來的建議,希望對大家有所幫助。開發者應當學習掌握規范,在開發程序時應當盡量遵循規范。程序員除了寫后臺程序之外,還有很大一部分工作在展現層,和瀏覽器前端打交道。 PHP 從誕生到現在已經有20多年歷史,從Web時代興起到移動互聯網退潮,互聯網領域各種編程語言和技術層出不窮, Node.js 、 GO 、 Pytho...

    william 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<