目录

Phalcon 框架之命令行

这年头哪个框架要是不提供命令行交互接口和脚手架,就不好意思自称是框架。事实上,一个优秀的框架总会面面俱到的,框架本来就是让开发者减轻负担,避免重复造轮子的,让开发者专注业务本身,而不是把时间精力消耗在磨刀上面。当然这是柄双刃剑,理想的状态理应是业务技术并驾齐驱。无论是建造钢铁大厦的 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"

创建项目

支持的项目类型:climicrosimple - 默认,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%';