0%

[PHP] 在 Phalcon 新增一個 namespace

前言

php 中常常會用 namespace 將類別 (Class) 作區隔,然而網路上文章對於在 Phalcon 框架中加入一個新 namespace 的方面沒有太多的著墨,使 Phalcon 入門門檻增加,對新手較不友善。個人也是初次使用 Phalcon 框架,所以會以新手的角度來記錄這個步驟!

環境

  • Phalcon 4.0.3

創建 namespace 步驟

新增目錄

先在 app 目錄下創建一個目錄,是將來要放新 Class 的地方,我這裡是想要放一些我自己擴展 Phalcon\Forms\Form 的類別,所以目錄取名為 forms

1
2
3
4
5
6
7
8
9
10
user@pc:/var/www/myProject/app$ tree -L 1
.
├── config
├── controllers
├── dbBackup
├── forms
├── library
├── migrations
├── models
└── views

新增 config.php (app/config/config.php) 之中 application 內的路徑 formsDir

1
2
3
4
5
6
7
8
9
10
11
12
'application' => [
'appDir' => APP_PATH . '/',
'controllersDir' => APP_PATH . '/controllers/',
'modelsDir' => APP_PATH . '/models/',
'migrationsDir' => APP_PATH . '/migrations/',
'viewsDir' => APP_PATH . '/views/',
'pluginsDir' => APP_PATH . '/plugins/',
'libraryDir' => APP_PATH . '/library/',
'formsDir' => APP_PATH . '/forms/',
'cacheDir' => BASE_PATH . '/cache/',
'baseUri' => '/',
]

註冊 namespace

要註冊新增的 namesapce,這個動作在 loader.php (app/config/loader.php)內完成,Array 中的 Key (e.g.:'AccountSystem\Forms') 依自己喜歡,不與其它 Key 撞名即可!

1
2
3
4
5
6
7
8
9
10
11
12
$loader->registerNamespaces(
[
'AccountSystem\Models' => $config->application->modelsDir,
'AccountSystem\Forms' => $config->application->formsDir,
]
)->register();
$loader->registerDirs(
[
$config->application->controllersDir,
$config->application->modelsDir
]
)->register();

完成與測試

這樣就算是新增完成囉!只要在 app/forms 目錄下的類別中,最前面加上 namespace AccountSystem\Forms;,在其它的文件就可以調用 AccountSystem\Forms\SignUpForm 了喔!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

namespace AccountSystem\Forms;

use Phalcon\Forms\Element\Date;
use Phalcon\Forms\Element\Password;
use Phalcon\Forms\Form;
use Phalcon\Forms\Element\Text;
use Phalcon\Forms\Element\Select;

class SignUpForm extends Form
{
...
}
?>
很高興能在這裡幫助到您,歡迎登入 Liker 為我鼓掌 5 次,或者成為我的讚賞公民,鼓勵我繼續創造優質文章。
以最優質的內容回應您的鼓勵