9

これはおそらく非常にばかげた質問だと思われますが、私は Web サイト用の単純なテンプレート システムをまとめている最中であり、変数の使用法を追跡し、すべてを整然とした状態に保とうとしています。

以下の方法のメリット・デメリットがあれば教えてください。

単純な変数:

$tpl_title = 'my title'
$tpl_desc = 'my text'

配列:

$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'

物体:

$tpl->title = 'my title'
$tpl->desc = 'my text'

配列とは対照的に、html内でエコーしたときにきれいに見えるオブジェクトメソッドが一番好きで、配列のような方法で使用できると思いますか? ただし、私が知りたいのは、この方法でオブジェクトを使用することは悪い習慣と見なされるのか、それとも不必要なオーバーヘッドが発生するのかということです。

4

7 に答える 7

6

理想的なシナリオでは、一時的な目的でメソッドにローカルな変数を除いて、すべての変数がオブジェクトに属している必要があります。しかし、私たちは理想的な世界に住んでいるわけではなく、特に私たちのプログラミング言語は理想的な世界からかけ離れています. 状況に応じて、生活を楽にする最善の方法を選択してください。テンプレートに何かを使用している場合は、通常、すべてのデータを配列に保持しextract、配列をスタンドアロンの変数に取得します。

そうです、オブジェクト メソッドが最も優れているので、途方もない時間を費やさずに、できる限り実現するようにしてください。

また、オブジェクトが大好きで、それをきちんとした->方法で行いたい場合は、次のことができます。

$object = (object)$array;

これにより、配列がオブジェクトに変換されます。

それが役立つことを願っています。

于 2013-03-20T11:03:03.777 に答える
5

私はそれを不必要なオーバーヘッドと考えます。あなたが話していることをオブジェクト指向の方法で行うということは、最初の例で指定したように、クラス内で一連の変数を作成するだけであることを意味します。

私の意見では、配列が最善の方法です。使用する変数は 1 つだけで、それをクラスに統合することもできます。そのため、代わりにを使用$tpl->titleできます$tpl->text['title']

于 2013-03-20T10:57:23.130 に答える
2

配列

バックエンド部分では、すべてを配列に保存することをお勧めします。これにより、追跡する変数を1つだけ持つことができ、それをフロントエンドに渡すとextract()、配列を単純な変数に変換できます.

構文

を使用extract()すると、FrontEnd での構文が簡素化されます。つまり、テンプレートには常に $variables しかありません。

バックエンド
$array['title'];

では、テンプレートで一度抽出されるものを設定します
$title;

バックエンド関数の例

 protected function fetch($template, $data = null)
    {
        if (!$this->isTemplate($template)) {
            throw new Exception("Template file $this->_templatePath$template not found");
        }
        ob_start();
        if (is_array($data)) {
            extract($data, EXTR_SKIP);
        }
        require $this->_templatePath . $template . EXT;
        return ob_get_clean();
    }
于 2013-03-20T10:58:47.200 に答える
0
$tpl = array (
  'title' => 'my title',
  'desc' => 'my text'
);

ゴランが言ったように、これらの配列を後でiniファイルに保存し、必要に応じてparse_ini_fileで抽出できるというボーナスがあります

ユーザーが自分の ini ファイルに書き込むことを許可したい場合は、これが重要になる可能性があります。

于 2013-03-20T11:56:40.830 に答える
0

結局、それらは同じです。好みによって異なりますが、変数をグループ化できるため、配列またはオブジェクトを使用しますが、物事をより適切に整理できます。

オブジェクト メソッドは機能しますが、本来の用途ではないと思います。

だから私は配列と言うでしょう!

また、配列で使用できる PHP ネイティブ関数がたくさんあります。たとえば、配列の並べ替えなどですarray_map()array_filter()

于 2013-03-20T10:59:10.537 に答える
0

私の意見では、それを設定する最もクリーンな方法は、次のような配列です。

$tpl = array (
  'title' => 'my title',
  'desc' => 'my text'
);

Zaneの回答と組み合わせることもできます。

ではごきげんよう!

于 2013-03-20T11:04:18.753 に答える