プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、ヒアドキュメント内に任意の処理を埋め込みたい
結論から書くと

クラスを作って、そのメソッドとして処理を定義する

とすれば、まぁ、近いことはできるようです。

それでは、詳細を書いていきます。

使いようによっては便利なヒアドキュメントですが、
その中で関数を使いたかったのですね。
そこで微妙にハマりました。

ヒアドキュメントの中で変数を展開することはできますが、
関数を使うことはできなかったのです。

つまり

<?php

    $hoge1 = "あああ";

    $str = <<< EOT

ほげほげ

{$hoge1}

EOT;

print $str;

はできるけど

<?php

function func1($val){
    print $val;
}


    $str = <<< EOT

ほげほげ

{func1("あああ")}

EOT;

print $str;

はできないよっと。
実行すると

ほげほげ

{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;

簡単に補足すると、ヒアドキュメント内で実行したい任意の処理を
clsHogeクラスのfunc1()メソッドとして定義しています。
今回は、数字を1から指定した数まで表示する処理を用意しました。

あとは

$ch = new clsHoge();

で、インスタンスを作成して、ヒアドキュメント内の

{$ch->func1(10)}

で呼び出しているだけです。

これで何とか、ヒアドキュメント内で任意の処理を実行できました。

とはいえ、アレですけどね。
私はこの書き方は嫌いです(-A-)

一言で言えば、美しくない\(-A-)/

こんな書き方をするくらいならプログラム構造を見直せ!って思います。
とはいえ、致し方ない場合も無くはないでしょうしね。
裏技的な位置付けで覚えておく分には、良いと思います。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事