5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP+phalconでWEBアプリケーションを作成する

Last updated at Posted at 2019-07-07

業務で、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). ダウンロード

phalcon-devtools

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

image.png

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

image.png

image.png

HTMLは日本語化などの微調整が必要ですが、テーブルさえ登録すればCRUDが簡単に実装できます。

PHPでの開発なら、Phalconはなかなかいい感じです。

参考サイト

Webアプリ開発に最適!2019年おすすめPHPフレームワーク10選
Phalcon Devtoolsを使ったMVCプロジェクト作成からHelloWorldまで

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?