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

資訊專欄INFORMATION COLUMN

現(xiàn)在寫(xiě) PHP,你應(yīng)該知道這些

supernavy / 2048人閱讀

摘要:首先你應(yīng)該是在用以上的版本,如果版本在這之下,是時(shí)候該升級(jí)了。按照其官網(wǎng)的說(shuō)法,這個(gè)組織的目的并不是告訴你你應(yīng)該怎么做,只是一些主流的框架之間相互協(xié)商和約定。和沒(méi)有出現(xiàn)在以上的列表中,是因?yàn)檫€沒(méi)有投票通過(guò)。不要被這些話所困擾。

首先你應(yīng)該是在用 PHP 5.3 以上的版本,如果 PHP 版本在這之下,是時(shí)候該升級(jí)了。我建議如果有條件,最好使用最新的版本。

你應(yīng)該看過(guò) PHP The Right Way,這篇文章包含了很多內(nèi)容,而且還能再擴(kuò)展開(kāi)。大部分的名詞和概念你都需要了解。

1. PSR

The idea behind the group is for project representatives to talk about the commonalities between our projects and find ways we can work together.

在之前的文章中以及跟同事交流的過(guò)程中我多次提到過(guò) PSR(PHP Standard Recommendation)。很多人以為 PSR 只是做一些規(guī)范代碼風(fēng)格等無(wú)關(guān)痛癢的事情,但其實(shí)遠(yuǎn)不止此。

PSR 的一系列標(biāo)準(zhǔn)文檔由 php-fig (PHP Framework Interop Group)起草和投票決議,投票成員中有一些主流框架和擴(kuò)展的作者,包括 Laravel、Symfony、Yii等等。

按照其官網(wǎng)的說(shuō)法,這個(gè)組織的目的并不是告訴你你應(yīng)該怎么做,只是一些主流的框架之間相互協(xié)商和約定。但是我相信這些框架和擴(kuò)展中總會(huì)有你用到的。

PSR 目前通過(guò)的共有 6 份文檔:

0:自動(dòng)加載(主要是針對(duì) PHP 5.3 以前沒(méi)有命名空間的版本)

1:編碼規(guī)范

2:編碼風(fēng)格推薦

3:Log 結(jié)果

4:自動(dòng)加載更細(xì)(在出現(xiàn)命名空間后有很大的改變)

7:HTTP 消息接口

目前在起草(Draft)中的還有 PSR-5(PHPDoc Standard)、PSR-6(Cache)等。5 和 6 沒(méi)有出現(xiàn)在以上的列表中,是因?yàn)檫€沒(méi)有投票通過(guò)。

我相信隨著標(biāo)準(zhǔn)的不斷更新,你會(huì)發(fā)現(xiàn)研究這些約定對(duì)你也是很有裨益的,雖然未必什么都要遵守。

Nobody in the group wants to tell you, as a programmer, how to build your application.

2. Composer

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

composer 和 Pear、Pecl 都不同,它不僅僅是用于安裝擴(kuò)展,更重要的是定義了一種現(xiàn)代 PHP 框架的實(shí)現(xiàn)和擴(kuò)展管理的方法。類(lèi)似 node.js 的 npm、Python 的 pip 但又比以上做的更多。

composer 的核心是實(shí)現(xiàn)擴(kuò)展的標(biāo)準(zhǔn)安裝和類(lèi)的自動(dòng)加載。通過(guò) packagist.org 這個(gè)平臺(tái),無(wú)數(shù)的擴(kuò)展組件可以被很方便的引入,目前比較知名的 PHP 擴(kuò)展都可以通過(guò) composer 安裝了。而調(diào)用僅僅只需要加載一個(gè) autoload.php 的文件即可。

composer 是通過(guò) spl_autoload_register 方法注冊(cè)一個(gè)自動(dòng)加載方法實(shí)現(xiàn)擴(kuò)展類(lèi)和文件的加載的,當(dāng)然這中間 composer 也做了一個(gè)優(yōu)化。

我們都知道 PHP 引入文件要通過(guò) includerequire 實(shí)現(xiàn),這其實(shí)寫(xiě)起來(lái)并不好看。 PHP 5.3 提供了命名空間,這本來(lái)和文件引入也不相干。但是 composer 實(shí)現(xiàn)了 PSR-4(在老版本的 PHP 上是 PSR-0),使用 use 時(shí)通過(guò)調(diào)用 spl_autoload_register 實(shí)現(xiàn)的方法在調(diào)用時(shí)加載所需要的類(lèi),在寫(xiě)法上類(lèi)似 Python 的 import,即美觀也起到了按需加載、延遲加載的作用。

3. php-cs-fixer

The PHP Coding Standards Fixer tool fixes?most?issues in your code when you want to follow the PHP coding standards as defined in the PSR-1 and PSR-2 documents.

這個(gè)工具的作用是按照 PSR-1 和 PSR-2 的規(guī)范格式化你的代碼,還有一些可選的編碼風(fēng)格是 Symfony 的規(guī)范。

這個(gè)其實(shí)本來(lái)并沒(méi)有那么值得一說(shuō),只是最近在幾個(gè)開(kāi)源框架中都看到了 .php_cs 的文件,一時(shí)好奇,深究下去才發(fā)現(xiàn)了這個(gè)項(xiàng)目。

項(xiàng)目地址:https://github.com/FriendsOfPHP/PHP-CS-Fixer

具體的使用和配置方法在其項(xiàng)目主頁(yè)上都有介紹。這個(gè)組織的名字也很有趣:FriendsOfPHP。主要的成員大概是來(lái)自 Symfony 項(xiàng)目中。

可能有人覺(jué)得糾結(jié)代碼風(fēng)格的問(wèn)題其實(shí)沒(méi)有特別大的必要。要說(shuō)好處我也說(shuō)不上來(lái),如果你覺(jué)得編程不僅僅是一份工作,那這就跟你收拾房間一樣,邋遢的房間不影響你吃飯睡覺(jué),但干凈的看起來(lái)更舒服。如果要和別人合作,那這件事情就更重要了。

4. PsySH

A runtime developer console, interactive debugger and REPL for PHP.

PsySH 類(lèi)似 Python 的 IDLE 的一個(gè) PHP 的交互運(yùn)行環(huán)境。這個(gè)是我在 Laravel 中發(fā)現(xiàn)的,Laravel 5 的 artisan tinker 的功能是通過(guò)它來(lái)實(shí)現(xiàn)的。Laravel 4 中用的是另外一個(gè)項(xiàng)目:boris。

這個(gè)主要是在平時(shí)測(cè)試一些 php 的簡(jiǎn)單的函數(shù)和特性的時(shí)候可以方便使用。遇到一些不確定的事情、比如 empty 的使用等,可以用它來(lái)做些測(cè)試。

5. 一些框架和組件 框架

我比較喜歡的是 Laravel,目前公司在用的是 Yii2,我關(guān)注的有 Symfony 以及 Phalcon (C語(yǔ)言實(shí)現(xiàn))。用什么不用什么,主要是喜好,有時(shí)候也由不得自己選擇,但研究一下,多一分了解也未嘗不可。

提到 Laravel 很多人都會(huì)立馬想到 Ruby on Rails。我想模仿或者抄襲這都不是主要的目的,主要的目的是提供給開(kāi)發(fā)者一個(gè)更好的工具。Laravel 好在它有一個(gè)不一樣的路由控制(不帶 Action 后綴或前綴的),有一個(gè)好用的 ORM (Eloquent),好用的模板引擎 (Blade) 亦或有一個(gè)顏值比較高的文檔(社區(qū)看到的話)等等。

強(qiáng)大有時(shí)候也會(huì)被人詬病龐大,但這在于你需要了解自己項(xiàng)目的中長(zhǎng)期規(guī)劃,項(xiàng)目現(xiàn)在的大小以及未來(lái)的大小及承載。

Larval 的核心實(shí)現(xiàn)是一個(gè)容器(Container)以及 PHP 的反射類(lèi)(ReflectionClass)(Yii 2 也是一樣)。要理解這些,多看文章和文檔的同時(shí),也可以看看源碼。

Symfony 2 提供了很多組件。http-kernel 和 http-foundation 在 Laravel 中也有被繼承過(guò)來(lái)直接使用。它是值得了解和學(xué)習(xí)的。

CodeIgniter 是一個(gè)小巧而強(qiáng)大的框架。雖然 CI 并沒(méi)有使用 Composer 組件的方式進(jìn)行開(kāi)發(fā),但 3.0 以后的版本也加入了 Composer 的支持(這無(wú)非就是多一個(gè) vendor 的目錄,引入 autoload.php)的文件。

ORM

ORM 亦或 Active Record 我覺(jué)得還是需要的。也許有人認(rèn)為 PHP 就是一個(gè)模板引擎、就應(yīng)該手寫(xiě) SQL 。不要被這些話所困擾。

CodeIgniter 中 Active Record 的實(shí)現(xiàn)方式很輕巧,但對(duì)于 CI 本身的體量來(lái)說(shuō),已經(jīng)是很好用的了。

Laravel 實(shí)現(xiàn)的 Eloquent 我是很喜歡的,也可以集成到別的項(xiàng)目中去。Symfony 2 使用的是 Doctrine ,這個(gè)項(xiàng)目也值得關(guān)注。Yii 2 也有自己的一套實(shí)現(xiàn)方式。

模板引擎

模板引擎需要做三件事情:

變量值的輸出(echo),

條件判斷和循環(huán)(if ... else、for、foreach、while)

引入或繼承自其他文件

Laravel 實(shí)現(xiàn)的 Blade 是一個(gè)比較輕量好用的模板引擎。不過(guò)目前并不是很好能夠引入到其他框架中。十一的時(shí)候閑來(lái)無(wú)事試圖將其引入到 Yii 2 中,現(xiàn)在還只是簡(jiǎn)單的實(shí)現(xiàn),我希望后面能將 Blade 的解析部分多帶帶抽取出來(lái)做一個(gè)輕量的實(shí)現(xiàn)。在 Github 上搜一下發(fā)現(xiàn)也有人在做同樣的事情。

Yii 2 似乎更推薦就用原生的 PHP 去寫(xiě),不過(guò)也提供了支持 Smarty 和 Twig 的擴(kuò)展。Symfony 2 則采用了 Twig。Twig 和 Symfony 以及上文提到的 php-cs-fixer 都是 SensioLabs 的作品。

Smarty 是一個(gè)古老而頑強(qiáng)的模板引擎。說(shuō)實(shí)話我并不是太喜歡,其語(yǔ)法過(guò)于復(fù)雜,變量賦值這些事情都有自己的一套做法。現(xiàn)在的版本中更是使用 Lexer 的方式來(lái)解析文件,感覺(jué)像是用 PHP 實(shí)現(xiàn)了另外一種語(yǔ)言。項(xiàng)目里面還有一些太長(zhǎng)的正則表達(dá)式、太復(fù)雜的實(shí)現(xiàn),我覺(jué)得這是一件很危險(xiǎn)很容易出錯(cuò)的事情。

私博地址:0x1.im

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/21166.html

相關(guān)文章

  • 看吧,這就是現(xiàn)代化 PHP 該有的樣子

    摘要:這大概是我沒(méi)有及早使用,或多數(shù)開(kāi)發(fā)者流連現(xiàn)狀造成的。它就是,一個(gè)的框架。行為驅(qū)動(dòng)開(kāi)發(fā)是來(lái)自測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的開(kāi)發(fā)過(guò)程。簡(jiǎn)單的說(shuō),它就是經(jīng)常可能一天幾次將小塊代碼整合進(jìn)基礎(chǔ)代碼當(dāng)中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區(qū)協(xié)同翻譯的文章,已完成翻譯,更多信息請(qǐng)點(diǎn)擊?協(xié)同翻譯介紹?。 文章...

    Tangpj 評(píng)論0 收藏0
  • 這就是現(xiàn)代php該有的樣子(二)

    摘要:所以,是幫助您創(chuàng)建您的項(xiàng)目的測(cè)試框架,單元測(cè)試。行為驅(qū)動(dòng)開(kāi)發(fā)是一個(gè)來(lái)自測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的開(kāi)發(fā)過(guò)程。這種語(yǔ)言被稱為,是用來(lái)描述被測(cè)試的預(yù)期的行為。代碼將被測(cè)試并且沒(méi)有異常。這些標(biāo)準(zhǔn)提出了現(xiàn)代編碼風(fēng)格。 本文來(lái)自medium----原文鏈接; 歡迎作客我們的php&Laravel學(xué)習(xí)群:109256050 你需要開(kāi)始使用測(cè)試 這是我每天對(duì)自己說(shuō)的話。像很多人一樣,我不會(huì)像TDD所建議的那樣測(cè)試...

    fevin 評(píng)論0 收藏0
  • Composer三步曲:安裝、使用、發(fā)布

    摘要:是組件的依賴管理器,它在命令行中使用。廠商名和包名只是為了讓識(shí)別組件,而命名空間則是需要在代碼中使用組件。至此,我們的組件就發(fā)布成功了。總結(jié)以上就是關(guān)于安裝使用以及發(fā)布的介紹。 原文是在我自己博客中,小伙伴也可以點(diǎn)閱讀原文進(jìn)行跳轉(zhuǎn)查看,還有好聽(tīng)的背景音樂(lè)噢~ showImg(https://www.cxiansheng.cn/usr/uploads/2017/11/905996380....

    0x584a 評(píng)論0 收藏0
  • Laravel 程序架構(gòu)設(shè)計(jì)思路:使用動(dòng)作類(lèi)

    摘要:一個(gè)動(dòng)作類(lèi),應(yīng)該有一個(gè)能夠說(shuō)明其功能的名字,比如等。如果需要對(duì)我們的動(dòng)作類(lèi)實(shí)現(xiàn)某種適配器模式,這是非常方便的。使用單動(dòng)作類(lèi)的好處小巧而單一的邏輯域能夠防止代碼重復(fù)并提高代碼的可重用性,保持穩(wěn)定。易于針對(duì)各種場(chǎng)景進(jìn)行獨(dú)立測(cè)試。 showImg(https://segmentfault.com/img/remote/1460000015208092); 當(dāng)我們談?wù)摰綉?yīng)用程序的架構(gòu)的時(shí)候,經(jīng)...

    Caicloud 評(píng)論0 收藏0
  • 阿里巴巴2018秋招總結(jié)

    摘要:作為一個(gè)前端人,阿里巴巴,是我最想去的國(guó)內(nèi)公司,我看重的也不是他薪水如何,完全在于他的技術(shù),這一點(diǎn)可以說(shuō)明一切。阿里是個(gè)十分重視基礎(chǔ)的公司,和浮躁的前端大環(huán)境形成鮮明的對(duì)比。我不是第一次投阿里巴巴,所以心態(tài)一開(kāi)始還是挺平和的。 這是去年8月份秋招的面試,五面都面完了,給大家貢獻(xiàn)干貨吧。我沒(méi)寫(xiě)問(wèn)題的答案,有什么問(wèn)題可以留言區(qū)問(wèn)我。 一面 電話面(1小時(shí))電話面問(wèn)題不多,但是十分考驗(yàn)對(duì)相關(guān)...

    AWang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<