Webサイト全体で再利用されるアイテムを保持するグローバルファイルを作成しています。これらの2行のコードの違いは何ですか?一方はもう一方よりも「優れている」のでしょうか。
これ:
$logo = "img/mainlogo.jpg";
対これ:
function logo() {
echo "img/mainlogo.jpg";
}
Webサイト全体で再利用されるアイテムを保持するグローバルファイルを作成しています。これらの2行のコードの違いは何ですか?一方はもう一方よりも「優れている」のでしょうか。
これ:
$logo = "img/mainlogo.jpg";
対これ:
function logo() {
echo "img/mainlogo.jpg";
}
明確で読みやすいコードを作成し、htmlとphpで分割する必要があります。パフォーマンスの利益は重要ではありません...
<?php
...
$logo = "img/mainlogo.jpg";
...
?>
...
<img src="<?= $logo ?>" alt="logo">
...
投稿した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年にいますが、最適化は優れていますが、このタイプのマイクロ最適化は単純にばかげています。私は変数を割り当てることを好みます、それは明確で、あなたが期待することをします。
私はそれfunction logo()
がより良いと思います$logo
。echo
多くのメモリを消費しませんが、消費$logo
します。function logo()
何かが必要ですが、PHP独自のガベージコレクターによって処理されます。これらの関数を使用して、割り当てられたメモリを誤用しないようにすることもできます。
memory_get_peak_usage();
memory_get_usage();
使用中の関数が終了すると、PHPは、関数を使用しない場合よりも少なくとも効率的に、使用していたメモリをクリアします。再帰コードなど、メモリを大量に消費するものを使用している場合は、コードを関数またはメソッドに入れてみてください。関数/メソッドを閉じると、関数に使用されるメモリは、ループ内の変数を設定解除するよりもはるかに効率的にガベージされます。自体。
$logo = "img/mainlogo.jpg";
これを行うことでコードを変更せずに後で自然に再定義できますが$logo="img/newmainlogo.jpg";
、最初の定義では関数自体を変更する必要があります。