0

IF i はファイルを別のファイルに含めます。つまり、foo.php には、いくつかのメソッドを持つクラス「foo」が含まれています。インクルード時またはクラス開始時に、どの時点でphpがクラスをメモリにロードしますか。

ここ:include ('foo.php');

またはここ:$foo = new foo();

例: すべてが一意のクラスを含むが、それらのクラスの 1 つだけを呼び出す 50 個のファイルを含めると、メモリ使用量はどうなりますか? 速度?全体的に - その行動の悪さを説明してください。

4

1 に答える 1

2

ファイルの場合include、PHP が行うことはそのファイルを解析することだけであり、クラス定義、手続き行、または完全にコメントアウトされたコードが含まれているかどうかに関係なく、includesそれらの行を現在のファイルに追加し、次にevaluatesそれらを追加します。つまり、構文エラーを探し、行が実行可能な場合は実行します。50 個のクラス ファイルがすべて「インクルード」されている場合、インクルード プロセスが完了すると、50 個すべてのクラスが定義された 1 つのファイルがある場合と同様になります。単一のクラスまたは複数のクラスをインスタンス化するための動作は同じになります。オーバーヘッドの唯一の違いは、個々の評価と、これらの 50 個のファイルを含めることです。

さまざまなクラスを持つ多数のファイルのユースケースがあり、ロードする可能性のあるファイルに基づいてそれらを含めるだけでよい場合は、PHP の autoload 機能を確認してください。

<?php
function __autoload($class_name) {
    include $class_name . '.php';
}

$first = new FirstClass();
$second = new SecondClass(); 
?>

http://php.net/manual/en/language.oop5.autoload.php

于 2012-09-05T18:16:56.330 に答える