Auraではすべてのコードはパッケージにとして分類されます。ライブラリパッケージ、サポートパッケージ、Webパッケージなど - これらはすべて同じで単に "パッケージ"です。
パッケージのディレクトリ構造は次のようになります。
Vendor.Package/
cli/ # command-line script invokers
composer.json # composer/packagist file
config/ # package-level configs
default.php # default configs
test.php # configs for "test" mode
meta/ # metadata for packaging scripts
LICENSE # license file
README.md # readme file
src/ # the actual source code organized for PSR-0
Vendor/
Package/
Class.php
tests/ # test files for phpunit
Vendor/
Package/
ClassTest.php
bootstrap.php
phpunit.xml
web/ # public web assets
styles/ # css files
images/ # image files
scripts/ # javascript (or other script) files
通常src/
はこのように構成されます:
Vendor/
Package/
Cli/ # all CLI commands
CommandName/ # a particular CLI command and its support files
Command.php # the actual command logic
data/ # other data for the command
Web/ # all web pages
PageName/ # a particular web page and its support files
Page.php # the actual page action logic
views/ # views for the page
layouts/ # layouts for the page
data/ # other data for the page
View/
Helper/
HelperName.php # a view helper
パッケージに他のライブラリを配置することは自由にできます。
パッケージを作成してみます。ここでは「挨拶」をするためにパッケージとページコントローラーを作成しましょう。
まず、パッケージ構造(必要な部分だけ)を作成します:
$ mkdir -p package/Example.Package/src/Example/Package/Web/Greet/views
$ mkdir package/Example.Package/config
注:* nixの場合は、-pコマンドが使えます。Windoesの場合は各ディレクトリを別々に作成します。
コントローラを作成してみましょう。好きなエディタで以下のコードを入力して'Page.php'として package/Example.Package/src/Example/Package/Web/Greet/
フォルダに保存します。
<?php
namespace Example\Package\Web\Greet;
use Aura\Framework\Web\Controller\AbstractPage;
class Page extends AbstractPage
{
public function actionIndex()
{
$this->data->message = $this->context->getQuery('name', 'guys!');
$this->view = 'index';
}
}
次に、アクション用のビューを作成します。 以下のコードを貼り付けます
<?php
$this->title()->set('Welcome to the world of Aura Framework!');
?>
<h1>Hey good day <?= $this->message; ?></h1>
<form method="get" action="<?php echo $this->route('example_package_greet'); ?>" class="form-search">
<input type="text" name="name" id="name" class="input-medium search-query" placeholder="Name" />
<input type="submit" name="greet" id="greet" value="Greet" class="btn" />
</form>
package/Example.Package/src/Example/Package/Web/Greet/views
フォルダにindex.php
として保存します。
この時点で、あなたのパッケージディレクトリは次のようになります。
Example.Package/
src/
Example/
Package/
Web/
Greet/
Page.php
views/
index.php
私たちはまだオートローダーに任意のファイルを追加していないし、ルートも指定していません。それではそれらの設定を追加してみましょう。 エディタを開き、以下の内容を貼り付けます。
<?php
/** Example Package configs */
// add the package to the autoloader
$loader->add('Example\Package\\', dirname(__DIR__) . DIRECTORY_SEPARATOR . 'src');
// add a route to the page and action
$di->get('router_map')->add('example_package_greet', '/greet', [
'values' => [
'controller' => 'greet',
'action' => 'index',
],
]);
// map the 'greet' controller value to a page controller class
$di->params['Aura\Framework\Web\Controller\Factory']['map']['greet'] = 'Example\Package\Web\Greet\Page';
Example.Package/config
フォルダに default.php
としてファイルを保存します。
フレームワークにパッケージと設定ファイルをロードするため、{$system}/config/_packages
ファイルをパッケージに追加する必要があります。
いくつかのパッケージは、別のパッケージに依存しているため設定を最初にロードする必要があります。パッケージは {$system}/config/_packages
ファイルで書かれている順番で読み込まれます。
これまでにした事を確認してみましょう。PHPのCLIで利用できる組み込みのサーバ機能を使用してみましょう。
$ php -S localhost:8000 web/index.php
http://localhost:8000/greet
のURLを参照してHey good day
と表示されます。その時Bpb
とinput boxにテキストを入力して送信した場合はHey good day Bob
と表示されるでしょう。