2009-04-09 15 views
2

私は、例えばDebugR()のような私の関数を使いたいですが、ソースを含む関数ファイルをロードするためにrequireまたはinclude(include_path)を使いたくありません。ロード元ファイルなしでPHP関数を使用するには?

私はオートロードを使用することができますが、このアクションは私のPHP構成では一般的でなければなりません。私はPHP拡張を作成する必要があると思いますが、別の方法がありますか?

+0

はジム・PULSが、私はどのように編集futursの質問を覚えているだろう –

答えて

5

できるPHP設定行があります。

auto_prepend_file文字列

Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the require() function, so include_path is used. 

The special value none disables auto-prepending. 
0

拡張機能を構築したり、関数のクラスを自動ロードしたり、関数をページに直接必要としたり、関数を同じファイルに書き込んだりすることなく、PHPを調整することなく方法がないと確信しています構成。

好奇心で、これらのことをしたくない理由は何ですか?

0

なぜコードをメモリにキャッシュするアクセラレータを使用しないのですか?
"include"指示文を書く必要があります。
エクステンションがあなたの頭の中にある場合は、使用可能なオープンソースアクセラレータからフォークを外してください。

0

それを行うための唯一の実行可能な方法は、このようなオートロードを使用することです::

ドキュメントは、これは言う。もちろん、

// your_file.php 
function __autoload($class) 
{ 
    require_once('./classes/' . $class . '.php'); 
} 

echo _::Bar(); 
var_dump(_::DebugR()); 
echo _::Foo(); 

// ./classes/_.php 
class _ 
{ 
    function Bar() 
    { 
     return 'bar'; 
    } 

    function DebugR() 
    { 
     return true; 
    } 

    function Foo() 
    { 
     return 'foo'; 
    } 
} 

を、すべての関数は次のようになりますこの_クラスの内部に格納されます。

別の方法として、あなたがオブジェクト内から作業している場合(__callを使用することです)マジックメソッドと同じような何かを:

return $this->DebugR(); 
+0

「ありがとう私はオートロードを使うことができますが、このアクションは汎用でなければなりません " 私はオートロードを使いたくありません。投票された答えを読む、それは問題の最良の応答です。 –

関連する問題