PHPの最近のブログ記事
ちょっと疑問なことがありました。
phpのヒアドキュメントで一部の処理でエラーが出て先に進めないという事態が!!
まぁ、記述と考え方が間違っていたというのが正しいのですが
それって、だめなの?と思っちゃったので記録に残しておきます。
$data =<<<EOF
サンプル文章です。
この中に変数は使えるはずです。
例えば[$str_sample]
しかし、これはエラーになります。
[$str_sample.testです。]
EOF;
「$変数」と「.」(ドット)の使用が続くと処理として成り立たない模様でした。
深く調査しなかったので知っている方がおりましたらご教授いただけませんでしょうか。
そこに設定してある変数に値を設定したいという処理が必要になり調べてみました。
調査したところ{include}という関数が存在することがわかりました。
使い方は下記のような雰囲気です。
{include file="***.tpl"}
読み込んだテンプレート内に記述している変数などには
読み込み元と同様の変数対応が出来るようです。
例
<?php
$file_name = "read.tpl";
$include_file_name = "sample.tpl";
//Smartyへ値をセット
//Smartyのテンプレート読込み(read.tpl)
?>
read.tpl
<head>
読み込み元です。
ファイル名は「$file_name」です。
下は読み込んだファイルの中身です。
-------------------------------------------------
{include file="sample.tpl"}
-------------------------------------------------
</head>
sample.tpl
読み込まれたファイルです。
ファイル名は「$include_file_name」です。
[出力]
読み込み元です。
ファイル名は「read.tpl」です。
下は読み込んだファイルの中身です。
-------------------------------------------------
読み込まれたファイルです。
ファイル名は「sample.tpl」です。
-------------------------------------------------
1.Actionクラスでsessionをスタートさせる
sessionを使用したいActionクラスで
「authenticate」関数を宣言してその中に
「$this->session->start();」を記述しsessionをスタートさせる
function authenticate() { $this->session->start(); }
2.sessionの値を設定・取得する
Sessionスタート後に
$this->session->set('ID','内容'); と記述することで値をセットできる。
print $this->session->get('ID');※
と記述することで値を取得できる。
※今回は画面へ出力
3.常にsessionを走らせるようにする
「プロジェクト名_ActionClass.php」にある
「authenticate」関数に「1.」を記述することにより
Actionクラスないでセッションを使用することができる。
実際にサンプルアプリケーションを作って説明していきたいと思います。
1.プロジェクトの作成
Ethnaではシステムをプロジェクトという単位で区分けしています。
その為、新規でシステムを作成する場合は、プロジェクトを製作しなければなりません。>ethna add-project sample で、作成できます。
カレントフォルダに「sample」フォルダが作成され、
HTMLファイルは作成されたプロジェクトフォルダの中にある
「www」フォルダに格納されています。
2.とりあえずHTMLを閲覧してみる
「www」フォルダの中にある「index.php」を表示
URLにhttp://localhost/sample/www/index.phpと入力。HelloWorld が表示されれば動作確認完了。
3.値を設定して表示させてみる
app\action\index.php を編集(黄色部分を追加)
function perform() { $this->af->setApp('HelloWorld','ハローワールド'); return 'index'} template\ja\index.tpl を編集(黄色部分を追加)
<h2>Index Page</h2> <p>hello,world!</p> <p>{$app.Helloworld}</p>
PHPを本格的に勉強しようと思い立ち、
ついでにフレームワークもということで「Ethna」を使ってみようと思いました。
間違っていることがありましたら、コメントを頂ければ修正します。
1.Ethnaをインストール
-Win編-
pathを通す
c:\php\pear\ethna\bin\