PHP 框架:初學者指南

您好,未來的 PHP 大師!我很高興能成為您進入 PHP 框架世界的引路人。作為一個教學超過十年的 PHP 講師,我可以告訴您,框架就像是神奇的工具箱,能夠為您的編程冒險提供強大的動力。那麼,我們就開始吧!

PHP - Frameworks

軟件框架是什麼?

想像一下,您正在蓋房子。您可以從頭開始,自己製作磚塊並設計每一個小細節。或者,您可以使用預製的結構,專注於使房子成為獨一無二的您的家。軟件框架對編程的作用就是如此!

軟件框架是一組預先編寫的代碼集合,為開發軟件應用程序提供了結構。它就像是一個骨架,您可以用自己的代碼填充它,以創建一個完整的應用程序。

以下是一個簡單的代碼類比:

// 沒有框架的情況
<?php
// 連接到數據庫
$db = new mysqli('localhost', 'username', 'password', 'database');

// 處理用戶輸入
$username = $_POST['username'];
$password = $_POST['password'];

// 驗證輸入
if (empty($username) || empty($password)) {
echo "請填寫所有字段";
} else {
// 檢查用戶憑據
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = $db->query($query);
if ($result->num_rows > 0) {
echo "登錄成功";
} else {
echo "無效的憑據";
}
}
?>

// 使用框架的情況(偽代碼)
<?php
class LoginController extends BaseController {
public function login(Request $request) {
$this->validate($request, [
'username' => 'required',
'password' => 'required'
]);

if (Auth::attempt($request->only('username', 'password'))) {
return redirect()->intended('dashboard');
}

return back()->withErrors(['message' => '無效的憑據']);
}
}
?>

如您所見,框架版本更加有組織且容易閱讀。它為您處理了很多繁重的工作!

現在,讓我們探討一些流行的 PHP 框架:

FuelPHP

FuelPHP 就像是那個總是準備伸出援手的友好鄰居。它模塊化、靈活,並帶有內置的安全功能。

// FuelPHP 中的一個簡單控制器示例
class Controller_Welcome extends Controller
{
public function action_index()
{
return Response::forge(View::forge('welcome/index'));
}
}

這段代碼創建了一個簡單的控制器,用於渲染一個視圖。FuelPHP 擔任路由和組織代碼結構的工作。

CakePHP

CakePHP 就像是 PHP 框架中的貝蒂·克羅克 - 它讓編程(烘烤)變得易如反掌!它遵循 MVC(模型-視圖-控制器)模式,並強調約定優於配置。

// CakePHP 中的模型示例
class Article extends AppModel {
public $validate = array(
'title' => array(
'rule' => 'notBlank'
),
'body' => array(
'rule' => 'notBlank'
)
);
}

這段代碼定義了一個文章模型及驗證規則。CakePHP 根據此模型自動處理數據庫交互。

FlightPHP

FlightPHP 是這群框架中最簡約的。它輕量且適合小型項目或 API。

// FlightPHP 中的 Hello World
Flight::route('/', function(){
echo 'Hello World!';
});

Flight::start();

這段簡單的代碼設置了一個路由,當有人訪問您的首頁時,它會回應 "Hello World!"。

Symfony

Symfony 就像是 PHP 框架中的瑞士軍刀。它強大、可擴展,並被許多大型公司使用。

// Symfony 中的控制器示例
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class LuckyController
{
public function number()
{
$number = random_int(0, 100);

return new Response(
'<html><body>幸運數字:'.$number.'</body></html>'
);
}
}

這段代碼創建了一個控制器,用於生成並顯示一個隨機數字。

Yii 框架

Yii(發音為 "Yee")代表 "Yes It Is!" - 確實,它快速且安全!它適合開發小型和大型網絡應用程序。

// Yii 中的模型示例
namespace app\models;

use yii\db\ActiveRecord;

class Country extends ActiveRecord
{
public static function tableName()
{
return 'country';
}
}

這段代碼定義了一個與 'country' 數據庫表對應的模型。Yii 的 ActiveRecord 讓數據庫操作變得非常簡單。

Laravel

Laravel 是 PHP 框架中的搖滾明星。它優雅、表達能力强,並帶有許多開箱即用的功能。

// Laravel 中的路由示例
Route::get('/', function () {
return view('welcome');
});

這段簡單的代碼設置了一個路由,當有人訪問您的首頁時,它會顯示歡迎視圖。

Zend

Zend 框架(現為 Laminas Project 的一部分)就像是 PHP 框架中的智者。它面向企業,高度可定制。

// Zend 中的控制器示例
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
public function indexAction()
{
return new ViewModel();
}
}

這段代碼創建了一個簡單的控制器和索引動作。

CodeIgniter

CodeIgniter 就像是 PHP 框架中的跑車 - 它快速、輕量,並且開發(駕駛)起來非常有趣!

// CodeIgniter 中的控制器示例
<?php
class Pages extends CI_Controller {

public function view($page = 'home')
{
if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php'))
{
show_404();
}

$data['title'] = ucfirst($page);

$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
}

這段代碼創建了一個控制器,可以加載不同的頁面視圖。

Phalcon PHP

Phalcon 是 PHP 框架中的速度魔王。它用 C 語言編寫並編譯為 PHP 擴展,因此速度非常快。

// Phalcon 中的控制器示例
use Phalcon\Mvc\Controller;

class IndexController extends Controller
{
public function indexAction()
{
echo "<h1>Hello World!</h1>";
}
}

這段代碼創建了一個簡單的控制器,輸出 "Hello World!"。

PHPixie

PHPixie 就像是街区上酷炫的新孩子。它模塊化、快速,並且適合各種大小的項目。

// PHPixie 中的控制器示例
namespace Project\Controller;

class Greet extends \PHPixie\Controller
{
public function defaultAction()
{
return $this->components()->template()->get('greet')
->set('name', 'World');
}
}

這段代碼創建了一個控制器,渲染一個問候模板。

Agavi

Agavi 是 PHP 框架中的馬拉松選手。它為長期項目而建,並強調可擴展性和可維護性。

// Agavi 中的動作示例
class DefaultSuccessView extends AgaviView
{
public function executeHtml(AgaviRequestDataHolder $rd)
{
$this->setupHtml($rd);

$this->setAttribute('_title', '歡迎來到 Agavi');
$this->setAttribute('message', 'Hello World!');
}
}

這段代碼定義了一個視圖,設置了一些用於渲染的屬性。

現在,讓我們在下面的表格中總結這些框架的關鍵特點:

框架 關鍵特點
FuelPHP 模塊化、靈活、內置安全
CakePHP MVC 模式、約定優於配置
FlightPHP 輕量、適合小型項目和 API
Symfony 强大、可擴展、大型公司使用
Yii 快速、安全、適合各種應用
Laravel 優雅、表達能力强、功能豐富
Zend 面向企業、高度可定制
CodeIgniter 快速、輕量、易於學習
Phalcon 极速、用 C 語言編寫
PHPixie 模塊化、快速、適合各種項目大小
Agavi 可擴展、可維護、適合長期項目

記住,選擇框架就像選擇一個可靠的副手為您的編程冒險提供支持。每個框架都有其自身的優勢,最佳選擇取決於您的項目需求和个人偏好。祝您編程愉快,未來的 PHP 巫師!

Credits: Image by storyset