4

Webサイト全体で再利用されるアイテムを保持するグローバルファイルを作成しています。これらの2行のコードの違いは何ですか?一方はもう一方よりも「優れている」のでしょうか。

これ:

$logo = "img/mainlogo.jpg";

対これ:

function logo() {
   echo "img/mainlogo.jpg";
}
4

5 に答える 5

4

明確で読みやすいコードを作成し、htmlとphpで分割する必要があります。パフォーマンスの利益は重要ではありません...

<?php
...
$logo = "img/mainlogo.jpg";
...
?>
...
<img src="<?= $logo ?>" alt="logo"> 
...
于 2012-12-09T18:05:06.863 に答える
2

投稿した2つのオプションのうち、関数の方が適しています。しかし、残酷に正直に言うと、この種のことはまさに定数の目的です。

defined('MAIN_LOGO') || define('MAIN_LOGO','img/mainlogo.jpg');

複数の言語をサポートする必要のあるサイトで作業しているとすると、同じトリックを使用できます。

defined('CLIENT_LOCALE')  || define('CLIENT_LOCATE',$whereverYouGetThisFrom);
defined('MAIN_LOGO') || define('MAIN_LOGO','img/mainlogo_'.CLIENT_LOCALE.'.jpg');
//if language is EN, mainlogo_EN.jpg will be used, if lang is ES, mainlogo_ES.jpg, etc...

その上、一度定義された定数は再定義できません(もちろん、手がかりは名前にあります)。また、PHPにはまだ多くのCがあり、この質問にタグを付けているperformanceので、定数がCのマクロによく似ていることに興味があるかもしれません。これは、通常の関数呼び出しやC++よりもはるかに高速です。インライン関数(実際にインライン関数としてコンパイルされた場合でも)。

とにかく、集中化したいこれらのものがたくさんある場合はini、プロジェクト用にいくつかのファイルを作成することを考えて、それらをある種のグローバルオブジェクトに解析します

于 2012-12-09T19:05:53.953 に答える
1

関数の主な目的は、コードの繰り返しを避け、特定のタスクを実行することです。その定義に基づいて、値のみを返す関数を使用することは悪い設計です。

その文脈では、数バイトのメモリを節約するよりも、コードの可読性が優れていると思います。私たちは2012年にいますが、最適化は優れていますが、このタイプのマイクロ最適化は単純にばかげています。私は変数を割り当てることを好みます、それは明確で、あなたが期待することをします。

于 2012-12-09T18:16:52.463 に答える
1

機能は良いです。

私はそれfunction logo()がより良いと思います$logoecho多くのメモリを消費しませんが、消費$logoします。function logo()何かが必要ですが、PHP独自のガベージコレクターによって処理されます。これらの関数を使用して、割り当てられたメモリを誤用しないようにすることもできます。

  1. memory_get_peak_usage();
  2. memory_get_usage();

説明:

使用中の関数が終了すると、PHPは、関数を使用しない場合よりも少なくとも効率的に、使用していたメモリをクリアします。再帰コードなど、メモリを大量に消費するものを使用している場合は、コードを関数またはメソッドに入れてみてください。関数/メソッドを閉じると、関数に使用されるメモリは、ループ内の変数を設定解除するよりもはるかに効率的にガベージされます。自体。

出典: PHPのメモリ不足を防ぐための7つのヒント

于 2012-12-09T18:01:45.077 に答える
0

$logo = "img/mainlogo.jpg";これを行うことでコードを変更せずに後で自然に再定義できますが$logo="img/newmainlogo.jpg";、最初の定義では関数自体を変更する必要があります。

于 2012-12-09T18:00:59.213 に答える