Includere automaticamente le funzioni mancanti?

Possibile duplicato:
funzioni di caricamento automatico in php

Sto lavorando su un framework PHP. Mi chiedo se c'è un modo per riscrivere magari il gestore degli errori quando una function non esiste per provare automaticamente ad includere il file dichiarando prima la function.

Esempio:

echo general_foo(); // <-- general_foo() is not yet stated. // A handler tries to include_once('functions/general.php') based on the first word of the function name. // If the function still doesn't exist - throw an error. 

La vittoria da questo sarebbe saltare la compilazione di file non necessari o saltare tenere traccia e lo stato include qua e là.

Semplicemente __autoload per funzioni piuttosto che per classi.

Non esiste e probabilmente non lo farà mai. Sì, lo vorrei anch'io … Tuttavia, questo non ti impedisce di utilizzare classi con funzioni statiche e di consentire il caricamento automatico di PHP.

http://php.net/spl-autoload-register

L'ho risolto così

Il file class classs / functions.php:

  class functions { public function __call($function, $arguments) { if (!function_exists($function)) { $function_file = 'path/to/functions/' . substr($function, 0, strpos($function, '_')).'.php'; include_once($function_file); } return call_user_func_arrays($function, $arguments); } } 

Il file di funzioni functions / test.php

  function test_foo() { return 'bar'; } 

Lo script myscript.php:

  require_once('classs/functions.php'); $functions = new functions(); echo $functions->test_foo(); // Checks if function test_foo() exists, // includes the function file if not included, // and returns bar 

Potresti eventualmente caricare automaticamente classs / functions.php usando __autoload ().

Alla fine, la syntax per my_function () diventa invece $ functions-> my_function (). E puoi scrivere i tuoi gestori di errori se le funzioni non esistono. 😉