こんにちは。ファガイです。本日はちょっとPhalcon PHPをまとめてみます。
環境
- CentOS
- PHP 5.4
- Phalcon 1.3.2
- MariaDB
簡易インストール
インストール
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon
cd build
./install
php.iniに以下を追加(別途iniファイル作ってそれに指定しないと出来ないことも)
extension=phalcon.so
apache再起動
service httpd restart
DevTools のインストール(方法1)
gitからクローン
git clone git://github.com/phalcon/phalcon-devtools.git
インストール
cd phalcon-devtools
. ./phalcon.sh
DevTools のインストール(方法2)
mkdir phalcon
cd phalcon
composer.pharを取ってくる
curl -s http://getcomposer.org/installer | php
composer.jsonを作る
{
"require": {
"phalcon/devtools": "dev-master"
}
}
インストール
php composer.phar install
コマンドを使えるようににシンボリックリンクを貼る
ln -s ~/phalcon/devtools/phalcon.php /usr/bin/phalcon
chmod ugo+x /usr/bin/phalcon
使えるか確認
phalcon commands
プロジェクトを作る
phalcon create-project project_name
DevToolsを含んだプロジェクトを作る
phalcon create-project project_name --enable-webtools
アクセスするURLは通常のベースURL/webtools.phpです。
DevToolsを途中で入れたくなった時
phalconのプロジェクトのディレクトリに移動して
phalcon webtools --action --directory=.
DevToolsを消したくなった時
phalconのプロジェクトのディレクトリに移動して
phalcon webtools --action disable --directory=.
プロジェクトの中身(webtools有り)
project_name
├── .htaccess
├── app
│ ├── cache
│ ├── config
│ │ ├── config.php
│ │ ├── loader.php
│ │ └── services.php
│ ├── controllers
│ │ ├── ControllerBase.php
│ │ ├── IndexController.php
│ ├── models
│ └── views
├── index.html
└── public
├── .htaccess
├── css
├── files
├── img
├── index.php
├── js
├── temp
├── webtools.config.php
└── webtools.php
public/index.phpについて
いわゆる最初に読むこむファイルです。
初期状態ではenvironmentの設定等が用意されていません。
なので、実際にプロジェクト等で使用する場合は以下の様な形にしておく必要があります。
“`
<?php
define('ENVIRONMENT', 'development');
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'localhost':
case 'development':
error_reporting(E_ALL);
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set.');
}
}
try {
/**
* Read the configuration
*/
$config = include __DIR__ . "/../app/config/". ENVIRONMENT . "/config.php";
/**
* Read auto-loader
*/
include __DIR__ . "/../app/config/loader.php";
/**
* Read services
*/
include __DIR__ . "/../app/config/services.php";
/**
* Handle the request
*/
$application = new \Phalcon\Mvc\Application($di);
echo $application->handle()->getContent();
} catch (\Exception $e) {
echo $e->getMessage();
}
“`
これを行うことで環境毎のフォルダに設定情報を置くことが出来ますね。
loaderやservicesも分割しても良いかもです。
configについて
config.php
DBの設定や、applicationのディレクトリ設定等を行います。
baseUriをちゃんと指定してないとURLがおかしくなるので注意しましょう。
loader.php
phalconがオートロードするディレクトリを設定を行います。
初期状態では、config.phpで指定しておいたlibraryDir等は含まれていませんので、使用したい場合は追加する必要があります。
services.php
Diコンテナ(依存注入)を設定する為のコンフィグです。
コントローラー
ControllerBaseがベースのコントローラーとなります。
外部からコントローラーにアクセス出来るようにするにはXXXControllerのような接尾辞にControllerと付ける必要があります。
また、アクセスするためにはYYYActionのように接尾辞にActionを付ける必要があります。
YYYActionとつけると自動的にviewのアクセス箇所が決まります。
views/XXX/YYY.拡張子という形でファイルを作ることでアクセスすることが出来ます。
アクセスを拒否したい時にはそのアクション内に
“`
$this->view->disable();
“`
と書きましょう。
コントローラーからDIにアクセスする
DI(app/config/services.php)で設定した名前があったかと思いますが、こちらにアクセスする方法が複数あります。
これは非常に簡単にアクセスが出来ます。
一番簡単な方法
“`
$this->storage->save('/some/file');
“`
これだけです。$thisを使うだけで自動的にDIにアクセス出来ます。
依存性が簡単に解消されます。
他の方法
“`
$this->di->get('storage')->save('/some/file');
$this->di->getStorage()->save('/some/file');
$this->getDi()->getStorage->save('/some/file');
$this->di['storage']->save('/some/file');
“`
Postされた情報にアクセスする
単体
“`
$name = $this->request->getPost('name');
“`
全部
“`
$posts = $this->request->getPost();
“`
まとめ
こんな感じで書いてきたわけですが、まだまだ色々説明してないし、理解していない点が多いのが現状。
実はこのようにコントローラーにルーティングも書かずにアクセスしたり出来るのはservices.phpの
“`
$di = new FactoryDefault();
“`
これが全てを処理しています。
これに関しては次回の記事で書きましょうかね。
ではではー。
コメント