PHP 系列:PHP Web 開發基礎,phpweb_PHP教程

來源:互聯網
上載者:User

PHP 系列:PHP Web 開發基礎,phpweb


PHP是動態類型的Web開發的指令碼語言,PHP以分頁檔作為載入和啟動並執行單元,PHP現在有了Composer作為開發包管理。

1.使用Composer管理依賴

自從.NET開發用了Nuget管理程式集依賴,我就再也離不開它了,幸虧Java中也有Maven管理jar包,雖然開源中國的鏡像太慢但還有ibiblio的鏡像可用,PHP現在終於有了Composer(參考1)用來管理資源套件。

(1)全域安裝(參考2)

在指定安裝目錄中執行命令列:

php -r "readfile('https://getcomposer.org/installer');" | php

在指定安裝目錄中執行命令列:

echo @php "%~dp0composer.phar" %*>composer.bat

將指定安裝目錄添加到環境變數的系統變數Path中。

(2)項目安裝

在項目目錄中執行命令列:

php -r "readfile('https://getcomposer.org/installer');" | php

使用 composer.json 檔案配置依賴。如配置PHP中常用的日誌組件:

{    "require": {        "monolog/monolog": "1.0.*"    }}

使用命令列命令 php composer.phar install 安裝依賴的資源套件。如果進行了全域安裝,只需要執行composert install。

這會將產生 composer.lock 檔案並依賴下載資源套件到 vendor 目錄,composer.lock 檔案是下載依賴時真正使用的檔案。

(3)升級依賴

項目使用 composer.lock 檔案維護依賴,如果我們需要使用更新版本的依賴,需要按需修改 composer.json 檔案並執行更新命令。全域安裝:composer update,項目安裝使用:php composer.phar update。

(4)資源套件查詢與鏡像

可以使用http://packagist.org檢索資源套件,好比.NET中的https://www.nuget.org/packages/和Java中的http://search.maven.org/。

可以使用http://packagist.phpcomposer.com鏡像,全域配置使用如下命令列命令:

composer config -g repo.packagist composer http://packagist.phpcomposer.com

項目配置使用如下命令列:

composer config repo.packagist composer http://packagist.phpcomposer.com

當然最簡單的方式是直接修改composer.config檔案:

{    "require": {        "monolog/monolog": "1.0.*"    },    "repositories": {        "packagist": {            "type": "composer",            "url": "http://packagist.phpcomposer.com"        }    }}

(5)自動載入

Composert 在 vendor 目錄下自動產生並維護包含了全部依賴資訊的 autoload.php 檔案。因此我們只需要通過 autoload.php 使用第三方庫即可。例如:

php require 'vendor/autoload.php';$log = new Monolog\Logger('name');$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));$log->addWarning('Foo');?>

2.PHP基礎

(1)PHP類似C語系文法的指令碼語言。

如果你有C或C++語言的基礎,那麼很多概念和文法都可以直接對照。從大小寫敏感到注釋,從資料類型、函數、參數傳遞和成員引用等。從C/C++/Java/C#這一體系學習下來,再加上JavaScript指令碼語言的基礎,加點PHP的技能點水到渠成。

(2)PHP是動態類型語言。

PHP有和C語言等強型別語言一樣的資料類型定義,支援的類型也相仿,只是PHP中同一變數在不同時刻可以表示不同類型的資料,但同一時刻,每個變數都相當於強型別中的指定類型的變數。因此對於PHP,更適合的稱呼是動態類型。習慣使用Java/C#等強型別語言總會對動態類型的指令碼語言心存焦慮,可以通過PHP的類型檢查函數減少這方面的顧慮(is_bool\is_integer\is_double\is_string\is_null等)。

(3)PHP以分頁檔方式運行。

無論如何使用PHP,PHP的都是以分頁檔方式啟動並執行,這和運行在瀏覽器端的JavaScript方式類似,JavaScript檔案只有在被載入到當前頁面才能引用和執行,PHP也只有在通過include或required方式載入後才能引用和執行,即使後續添加的 __autoload和spl_autoload依然只是簡化而非改變了其載入引用的本質。

(4)PHP不需要複雜的架構

PHP天生是處理Web請求的,HTTP協議相關的內容是PHP的重點,一般來講,除了縱向請求的處理,橫向的認證和授權控制部分,其他部分不應該過於依賴PHP,如果通過耦合性較高的Web架構使用PHP本身就是錯誤的。由於PHP本身的運行和載入方式,導致PHP天生就適合複用各種組件而非使用架構來解決問題。成天寄希望於架構的人,要麼是不想在PHP基礎要麼是不想在商務邏輯基礎上下功夫。

3.PHP熱門檔案

(1)設定檔config.php

應用配置的各種資訊定義在一個或多個設定檔中。一般每次請求都會載入設定檔,設定檔中不只包含了資料庫連接資訊,如應用MVC時,每次請求都會載入設定檔以便讀取所有URL和Controller以及View之間的規則。

(2)入口檔案index.php

處理首頁請求或全部請求的檔案。index.php在實現PHP的MVC時是天然的前段控制器FrontController,由index.php負責縱向的處理請求轉寄,橫向的認證和授權等處理檔案,等也需要在index.php中載入。

(3)資料訪問檔案database.php

database.php是工具類中最主要的用於資料訪問的檔案,為了避免資料訪問中重複性出現的代碼,一般的PHP應用程式都會獨立的一個或一組資料訪問檔案。

4.自訂Session

在PHP中自訂Session比Java中方便多了,只需要將自訂的函數名稱做為參數傳遞給session_set_save_handler($open, $close, $read, $write, $destroy, $gc)作為參數即可,我們自訂一個使用cookie作為儲存的session,作為示範沒有對資料長度進行驗證,也沒有使用對稱式加密解密。

phpfunction open_session() {    return true;}function close_session() {    return true;}function read_session($id) {    if ($_COOKIE[$id]) {        return base64_decode($_COOKIE[$id]);    }    return '';}function write_session($sid, $data) {    if ($_COOKIE['session_end']) {        setcookie($sid, base64_encode($data), $_COOKIE['session_end']);    } else {        $start = time() + session_get_cookie_params()['lifetime'];        setcookie('session_end', $start, $start);        setcookie($sid, base64_encode($data), $start);    }    return true;}function destroy_session() {    $_Session = array();    return true;}function gc_session() {    return true;}ini_set("session.cookie_lifetime", "3600");session_set_save_handler('open_session', 'close_session', 'read_session', 'write_session', 'destroy_session', 'gc_session');session_start();$_SESSION['count'] += 1;echo $_SESSION['count'];session_write_close();?>

參考

(1)https://getcomposer.org/doc/00-intro.md

(2)http://docs.phpcomposer.com/00-intro.html

http://www.bkjia.com/PHPjc/1092700.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1092700.htmlTechArticlePHP 系列:PHP Web 開發基礎,phpweb PHP是動態類型的Web開發的指令碼語言,PHP以分頁檔作為載入和啟動並執行單元,PHP現在有了Composer作為開發包管...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.