開始構(gòu)建一個Zend Framework 2 框架應(yīng)用程序

2018-09-28 20:16 更新

開始構(gòu)建一個框架應(yīng)用程序

為了構(gòu)建我們的應(yīng)用程序,我們先從 GitHub 獲取 ZendSkeletonApplication 源碼。使用 Composer (http://getcomposer.org) 從頭開始創(chuàng)建一個依賴 Zend Framework 的新項目:

php composer.phar create-project --stability="dev" zendframework/skeleton-application path/to/install

注意

另外一個下載 ZendSkeletonApplication 的方法是使用 GitHub。進入 https://github.com/zendframework/ZendSkeletonApplication 然后點擊 “Zip” 這個按鈕。這將會下載一個文件名類似于 ZendSkeletonApplication-master.zip 或其他相似的文件。

將這個文件解壓到你保持所有虛擬主機的地方,并將生成的目錄重命名為 zf2-tutorial。

ZendSkeletonApplication 設(shè)置使用 Composer 來解決它的依賴。這種情況下,這個依賴就是 Zend Framework 2 它本身。

下載 Zend Framework 2 到我們的應(yīng)用,只要簡單的輸入:

php composer.phar self-update
php composer.phar install

zf2-tutorial 文件夾中,這需要一些時間。你應(yīng)該可以看到一個像這樣的輸出:

Installing dependencies from lock file
- Installing zendframework/zendframework (dev-master)
Cloning 18c8e223f070deb07c17543ed938b54542aa0ed8

Generating autoload files

注意

如果你看到這樣的消息:

[RuntimeException]
  The process timed out.

這是說明連接太慢導(dǎo)致無法及時將全部包下載下來,然后 Composer 超時。要避免這個問題,替換一下運行命令:

php composer.phar install

用下面這個代替:

COMPOSER_PROCESS_TIMEOUT=5000 php composer.phar install

注意

使用 Wamp 的 Windows 用戶:

  1. 給 Windows 安裝 Composer。檢查 Composer 是否正確安裝,運行:

      composer
  2. 給 Windows 安裝 Git。同時需要添加 Git 的路徑到 Windows 的環(huán)境配置中。檢查 Git 是否正確安裝,運行:

      git
  3. 現(xiàn)在安裝 zf2 使用命令:

      composer create-project -s dev zendframework/skeleton-application path/to/install

我們現(xiàn)在可以移步到 Web 服務(wù)器設(shè)置步驟。

使用 Apache Web Server

你現(xiàn)在需要給應(yīng)用程序建立一個 Apache 虛擬主機并且編輯你的 host 文件,讓 http://zf2-tutorial.localhost 指定到 zf2-tutorial/public 目錄為 index.php 提供服務(wù)。

設(shè)置虛擬主機通常是在 httpd.confextra/httpd-vhosts.conf 中。如果你使用的是 extra/httpd-vhosts.conf,需要確保這個文件包含在你的 httpd.conf 主文件中。一些 Linux 的發(fā)行版本(例如 Ubuntu)會包裹 Apache 文件夾,配置文件會存儲在 /etc/apache2 中,并且它會在 /etc/apache2/sites-enabled 目錄下為每個虛擬主機創(chuàng)建一個文件。這種情況下,你應(yīng)該把虛擬主機(下面那一塊)放到 /etc/apache2/sites-enabled/zf2-tutorial文件中。

確保已經(jīng)定義 NameVirtualHost,并且設(shè)置成類似于 “*:80”,然后按照這些原則定義一個虛擬主機:

<VirtualHost *:80>
     ServerName zf2-tutorial.localhost
     DocumentRoot /path/to/zf2-tutorial/public
     SetEnv APPLICATION_ENV "development"
     <Directory /path/to/zf2-tutorial/public>
         DirectoryIndex index.php
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
</VirtualHost>

確保你已經(jīng)更新了 /etc/hosts 或者 c:\windows\system32\drivers\etc\hosts 文件以至于讓 zf2-tutorial.localhost 映射到 127.0.0.1。這樣之后網(wǎng)站就可以通過 http://zf2-tutorial.localhost 訪問了。

127.0.0.1            zf2-tutorial.localhost localhost

重啟 Apache。

如果你正確的完成以上步驟,你將看到類似于這樣的:

測試你的 .htaccess 文件是有效的,導(dǎo)航到 http://zf2-tutorial.localhost/1234 然后你應(yīng)該會看到:

如果你看到一個標(biāo)準(zhǔn)的 Apache 404 錯誤,繼續(xù)下一步前你應(yīng)該修復(fù) .htaccess 的用法。如果你使用的是 IIS 的 URL Rewrite Module,導(dǎo)入下面的內(nèi)容:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [NC,L]

現(xiàn)在你擁有一個正常工作的框架應(yīng)用程序,我們可以開始給我們的應(yīng)用添加一些細節(jié)內(nèi)容。

使用 Built-in PHP CLI Server

如果你使用的是 PHP 5.4 或以上版本-你可以使用 Built-in PHP CLI Server(cli-server)。使用這個,你只需要在根目錄開啟這個服務(wù):

php -S 0.0.0.0:8080 -t public/ public/index.php

這將讓網(wǎng)站在所有網(wǎng)絡(luò)接口的 8080 端口有效,使用 public/index.php 處理路由。這就意味著通過 http://localhost:8080 或者 http://<your-local-IP>:8080 都可以訪問到你的網(wǎng)站。

如果你正確完成以上步驟,你可以看到和上面 Apahce 顯得的同樣的結(jié)果。

測試你的路由是有效的,導(dǎo)航到 http://localhost:8080/1234,你可以看到和上面 Apahce 顯得的同樣的錯誤頁面。

注意

內(nèi)置的 CLI server 僅僅只是用于部署。

錯誤報告

當(dāng)你使用 Apache 的時候,你可以隨意的使用 VirtualHost 里面的 APPLICATION_ENV 設(shè)置讓 PHP 輸出所有瀏覽器上的錯誤。在開發(fā)應(yīng)用的時候使用這個將會有很大用處。

編輯 zf2-tutorial/public/ 目錄下的 index.php,用下面的內(nèi)容更改它:

<?php

 /**
  * Display all errors when APPLICATION_ENV is development.
  */
 if ($_SERVER['APPLICATION_ENV'] == 'development') {
     error_reporting(E_ALL);
     ini_set("display_errors", 1);
 }

 /**
  * This makes our life easier when dealing with paths. Everything is relative
  * to the application root now.
  */
 chdir(dirname(__DIR__));

 // Decline static file requests back to the PHP built-in webserver
 if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
     return false;
 }

 // Setup autoloading
 require 'init_autoloader.php';

 // Run the application!
 Zend\Mvc\Application::init(require 'config/application.config.php')->run();
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號