这年头哪个框架要是不提供命令行交互接口和脚手架,就不好意思自称是框架。事实上,一个优秀的框架总会面面俱到的,框架本来就是让开发者减轻负担,避免重复造轮子的,让开发者专注业务本身,而不是把时间精力消耗在磨刀上面。当然这是柄双刃剑,理想的状态理应是业务技术并驾齐驱。无论是建造钢铁大厦的 Symfony
,还是创造艺术家园 Laravel
,其命令行强大的令人望而却步。回过头来看一看主打速度的 Phalcon
吧。
安装命令
指定的目录
将 phalcon
命令加入到系统 PATH
变量中
1
2
3
4
5
6
7
8
9
10
| $ cd ~
$ git clone https://github.com/phalcon/phalcon-devtools.git .phalcon-devtools
$ cd .phalcon-devtools
$ ln -s ~/phalcon-devtools/phalcon.php /usr/local/bin/phalcon
$ chmod a+x /usr/local/bin/phalcon
或者
$ cd ~
$ composer global require phalcon/devtools
$ vim ~/.zshrc # vim ~/.bashrc
$ export PATH="$PATH:$HOME/.composer/vendor/bin/phalcon"
|
创建项目
支持的项目类型:cli
,micro
,simple
- 默认,modules
,共 4
种类型的项目
可用命令一览
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| $ phalcon
Phalcon DevTools (3.2.12)
Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)
|
创建默认项目
1
2
3
4
5
6
7
8
9
10
11
| // 创建一个 `cli` 类型的项目
$ phalcon project cli
// 创建一个 `micro` 类型的项目
$ phalcon project micro
// 创建一个 `simple` 类型的项目
$ phalcon project simple
// 创建一个 `modules` 类型的项目
$ phalcon project modules
|
创建定制项目
1
| $ phalcon project --name example --enable-webtools --directory ./ --type simple --use-config-ini --trace
|
创建控制器和模型
在创建控制器和模型时,先注册命名空间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| // loader.php
$loader = new \Phalcon\Loader();
$loader->registerNamespaces([
'App\\Controller' => '../app/controllers',
'App\\Model' => '../app/models',
])->register();
/**
* We're a registering a set of directories taken from the configuration file.
*/
$loader->registerDirs([
$config->application->controllersDir,
$config->application->modelsDir,
])->register();
|
创建控制器
1
2
3
| $ phalcon controller --name article --base-class ControllerBase --force
或者
$ phalcon controller --name article --namespace App\\Controller --base-class ControllerBase --force
|
创建模型
1
2
3
| $ phalcon model --name user
或者
$ phalcon model --name users --namespace App\\Model --get-set --doc --force --camelize --trace --mapcolumn --annotate
|
创建迁移
1
| $ phalcon migration --action=generate --config=./app/config/config.php --version=1.0.0 --descr=init --force
|
创建脚手架
1
| $ phalcon scaffold --table-name=user --get-set --force --trace
|
运行内置服务器
1
| $ phalcon serve --hostname=127.0.0.1 --port=8080 --basepath=.htrouter.php --rootpath=public
|
问题
Error: SQLSTATE[HY000] [2002] No such file or directory
1
2
| // 编辑 php.ini 文件中的 PDO 默认 socket
$ pdo_mysql.default_socket=/usr/local/var/run/mysql/mysql.sock
|
1
2
| // 查询 socket 变量
$ SHOW VARIABLES LIKE '%socket%';
|