業務で、PHPの新規案件がありそうなので、簡単に実装できるWEB Frameworkを探していたら、phalconを見つけました。phalconを使ってcrudを実装するまでを投稿します。
【環境】
カテゴリ | 値 |
---|---|
os | windows 10 home 64bit |
php | PHP 7.3.5( ZTS MSVC15 (Visual C++ 2017) x64 ) |
1. phalcon
PHPのWEBフレームワーク「phalcon」をつかってみます。
1-(1). ダウンロード
1-(2). インストール
ダウンロードしたファイルを解凍し、「php_phalcon.dll」を「c:\php\ext」にコピーする。
1-(3). php.iniを編集
php.iniを開いて、extensionに以下を追加する。
extension=php_phalcon.dll
2. phalcon-devtools
Phalconの開発ツールです。Phalconで開発する場合は、この開発ツールを使用します。
2-(1). ダウンロード
2-(2). パスを通す
ダウンロードしたphalcon-devtoolsのディレクトリを、環境変数のPathに追加します。
C:\data\php\phalcon\phalcon-devtools
2-(3). プロジェクトを作成する。
phalconコマンドを使ってプロジェクトを作成します。
phalcon project --name testprj1 --enable-webtools
cd testprj1
2-(4). 動かしてみる。
ビルトインウェブサーバーでプロジェクトを起動してブラウザで確認する。
php -S localhost:8000 -t public .htrouter.php
または、以下のコマンドでも起動できます。
phalcon serve
2-(5). 停止
「Ctrl-C」
3. INVO
PHPのWebFramework「Phalcon」のプロジェクトのテンプレートです。dev-toolsのprojectコマンドでプロジェクトを作成してもいいのですが、これは認証などの機能があらかじめ装備されているので、このテンプレートを使うほうがより効率的です。こちらもインストールします。
3-(1). インストール
3-(1)-1.ダウンロード
3-(1)-2. インストール
ダウンロードしたファイルを適当なフォルダに解凍するだけです。
3-(1)-3. DBセットアップ
3-(1)-3-1. データベースを作成する
プロジェクトが使用するデーターベースを作成します。以下は、MySQLを使う場合。
MySQLに接続し、データベースを作成します。データベース名は「invodb」とします。
create database invodb
3-(1)-3-2. プロジェクトをデータベースに接続できるようにする。
app\config\config.iniを開いて、databaseの接続情報を編集します。
[database]
adapter = Mysql
host = localhost
username = testuser
password = ************************
dbname = invodb
charset = utf8
3-(1)-3-3. INVOのテーブルやデータを登録する。
コマンドプロンプトから、以下のコマンドを実行してテーブルとデータを登録します。
mysql -u testuser -p ***************** -D invodb < C:\data\php\phalcon\invo-master\schemas\invo.sql
3-(1)-3-4. 動作確認
- PHPのビルトインサーバを起動し、INVOを動かしてみます。
php -S localhost:8000 -t public .htrouter.php
4.INVOにCRUDを追加する。
phalcon devtoolsには、Ruby on RailsやelixirのPhoenixと同じように、crudを自動的に生成するコマンドが装備されています。INVOにCRUDを追加してみます。
4-1.データベースにテーブルを追加します。
CREATE TABLE `department` (
`deptcode` varchar(6) NOT NULL,
`deptname` varchar(255) NOT NULL,
PRIMARY KEY (`deptcode`)
)
4-2.「scaffold」を実行する。
INVOのルートフォルダに移動して、以下のコマンドを実行します。
phalcon scaffold department --template-engine=volt
4-3.プロジェクトのフォルダ/ファイル構成
以下のようなフォルダ/ファイルが追加されます。
└─app
・・・・・
├─controllers
│ DepartmentController.php
・・・・・
├─models
│ Department.php
・・・・・
└─views
├─department
│ edit.volt
│ index.volt
│ new.volt
│ search.volt
・・・・・
└─layouts
department.volt
・・・・・
5.追加したCRUDをINVOから呼び出す。
修正するファイルですが、以下のファイルになります。
5-(1). app\library\Elements.php
navibarに「department」のcrudを追加します。
class Elements extends Component
{
private $_headerMenu = [
'navbar-left' => [
// <-- 追加
'department' => [
'caption' => 'Department',
'action' => 'index'
],
// --> ここまで
5-(2). app\plugins\SecurityPlugin.php
セキュリティレベルを設定します。
・・・
class SecurityPlugin extends Plugin
{
//・・・
public function getAcl()
{
// このif文はコメントしないと動かない。対応する}もコメントしてください。
// if (!isset($this->persistent->acl)) {
//・・・
$privateResources = [
// <-- 追加
'department' => ['index', 'search', 'new', 'edit', 'save', 'create', 'delete'],
// --> ここまで
//・・・
5-(3). 確認
WEBサーバを起動してブラウザで確認してみましょう。
phalcon serve
HTMLは日本語化などの微調整が必要ですが、テーブルさえ登録すればCRUDが簡単に実装できます。
PHPでの開発なら、Phalconはなかなかいい感じです。
参考サイト
Webアプリ開発に最適!2019年おすすめPHPフレームワーク10選
Phalcon Devtoolsを使ったMVCプロジェクト作成からHelloWorldまで