2015.
05.
31
14:44:37
結論から書くと
クラスを作って、そのメソッドとして処理を定義する
とすれば、まぁ、近いことはできるようです。
それでは、詳細を書いていきます。
使いようによっては便利なヒアドキュメントですが、
その中で関数を使いたかったのですね。
そこで微妙にハマりました。
ヒアドキュメントの中で変数を展開することはできますが、
関数を使うことはできなかったのです。
つまり
はできるけど
はできないよっと。
実行すると
のような形で、そのまま表示されてしまいました。
これを何とかしたかったのです。
ヒアドキュメント内で関数を使いたかったのです。
欲を言えば、任意の処理を埋め込むことができたら、なお良し!
ほんで、あれやこれやと調べたところ
クラスオブジェクトのメソッド呼び出しはできるよ
ということが分かりました。
なんだ、それならやりたい放題じゃねーか(-A-)
と言うわけで、例えばこんな感じにすることで、
任意の処理を埋め込むことができましたφ(--)
簡単に補足すると、ヒアドキュメント内で実行したい任意の処理を
clsHogeクラスのfunc1()メソッドとして定義しています。
今回は、数字を1から指定した数まで表示する処理を用意しました。
あとは
で、インスタンスを作成して、ヒアドキュメント内の
で呼び出しているだけです。
これで何とか、ヒアドキュメント内で任意の処理を実行できました。
とはいえ、アレですけどね。
私はこの書き方は嫌いです(-A-)
一言で言えば、美しくない\(-A-)/
こんな書き方をするくらいならプログラム構造を見直せ!って思います。
とはいえ、致し方ない場合も無くはないでしょうしね。
裏技的な位置付けで覚えておく分には、良いと思います。
そんな感じ\(--)/
クラスを作って、そのメソッドとして処理を定義する
とすれば、まぁ、近いことはできるようです。
それでは、詳細を書いていきます。
使いようによっては便利なヒアドキュメントですが、
その中で関数を使いたかったのですね。
そこで微妙にハマりました。
ヒアドキュメントの中で変数を展開することはできますが、
関数を使うことはできなかったのです。
つまり
<?php
$hoge1 = "あああ";
$str = <<< EOT
ほげほげ
{$hoge1}
EOT;
print $str;
$hoge1 = "あああ";
$str = <<< EOT
ほげほげ
{$hoge1}
EOT;
print $str;
はできるけど
<?php
function func1($val){
print $val;
}
$str = <<< EOT
ほげほげ
{func1("あああ")}
EOT;
print $str;
function func1($val){
print $val;
}
$str = <<< EOT
ほげほげ
{func1("あああ")}
EOT;
print $str;
はできないよっと。
実行すると
ほげほげ
{func1("あああ")}
{func1("あああ")}
のような形で、そのまま表示されてしまいました。
これを何とかしたかったのです。
ヒアドキュメント内で関数を使いたかったのです。
欲を言えば、任意の処理を埋め込むことができたら、なお良し!
ほんで、あれやこれやと調べたところ
クラスオブジェクトのメソッド呼び出しはできるよ
ということが分かりました。
なんだ、それならやりたい放題じゃねーか(-A-)
と言うわけで、例えばこんな感じにすることで、
任意の処理を埋め込むことができましたφ(--)
<?php
class clsHoge {
function func1($num) {
for ($i=1; $i <= $num; $i++){
print $i . "\n";
}
}
}
$ch = new clsHoge();
$str = <<< EOT
ほげほげ
{$ch->func1(10)}
EOT;
print $str;
class clsHoge {
function func1($num) {
for ($i=1; $i <= $num; $i++){
print $i . "\n";
}
}
}
$ch = new clsHoge();
$str = <<< EOT
ほげほげ
{$ch->func1(10)}
EOT;
print $str;
簡単に補足すると、ヒアドキュメント内で実行したい任意の処理を
clsHogeクラスのfunc1()メソッドとして定義しています。
今回は、数字を1から指定した数まで表示する処理を用意しました。
あとは
$ch = new clsHoge();
で、インスタンスを作成して、ヒアドキュメント内の
{$ch->func1(10)}
で呼び出しているだけです。
これで何とか、ヒアドキュメント内で任意の処理を実行できました。
とはいえ、アレですけどね。
私はこの書き方は嫌いです(-A-)
一言で言えば、美しくない\(-A-)/
こんな書き方をするくらいならプログラム構造を見直せ!って思います。
とはいえ、致し方ない場合も無くはないでしょうしね。
裏技的な位置付けで覚えておく分には、良いと思います。
そんな感じ\(--)/