2012-04-24 13 views
6

Mam zwyczaj używania funkcji include() w skryptach php. Chciałbym wiedzieć, czy to dobre podejście. Używam tylko dużo, ponieważ sprawia, że ​​kod wygląda lepiej na programowanie przyszłościowe.Używanie za dużo include() w php

Odpowiedz

5

skorzystać z funkcji php automatycznie ładowanej

przykład:

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

dowolnym momencie wystąpienia nową klasę. PHP automagicznie wywołuje funkcję __autoload z jednym argumentem, tj. Nazwą klasy. rozważyć poniższy przykład

$user = new User(): 

jeśli instancję obiektu użytkownika tutaj funkcja autoload nazywa, próbuje dołączyć plik z tego samego katalogu. (w odniesieniu do powyższej funkcji automatycznego ładowania). teraz możesz zaimplementować własną logikę w celu automatycznego ładowania klas. bez względu na to, w którym katalogu się znajduje. Więcej informacji znajdziesz pod tym linkiem: http://in.php.net/autoload.

Aktualizacja: @RepWhoringPeeHaa, ty to prawidłowe kumpel powiedział. jest więcej korzyści z używania spl_autoload niż prosta funkcja automatycznego ładowania. Główną korzyścią, jaką widzę, jest to, że więcej niż jedna funkcja może być użyta lub zarejestrowana.

np

function autoload_component($class_name) 
{ 
    $file = 'component/' . $class_name . '.php'; 
    if (file_exists($file)) { 
     include_once($file); 
    } 
} 

function autoload_sample($class_name) 
{ 
    $file = 'sample/' . $class_name . '.php'; 
    if (file_exists($file)) { 
     include_once($file); 
    } 
} 
spl_autoload_register('autoload_component'); 
spl_autoload_register('autoload_sample'); 
+0

@ yusufiqbalpk, jeśli chcesz dowiedzieć się więcej. proponuję zacząć od poznania koncepcji OOPS w PHP. tutaj jest link, aby zacząć http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/ –

+1

Wszystkie odpowiedzi były dobre, ale wybrałem cię dla twojego tutoriala. Najlepszy facet. – yusufiqbalpk

+1

@ yusufiqbalpk możesz rozważyć "nowe" 'spl_autoload' zamiast powyższych. – PeeHaa

5

Jeśli rozwój zorientowany obiektowo i mieć pliku dla każdej klasy, należy rozważyć wdrożenie funkcji autoloadera które automatycznie wywołuje include gdy klasa jest używana, ale jeszcze nie załadowany:

$callback = function($className) { 
    // Generate the class file name using the directory of this initial file 
    $fileName = dirname(__FILE__) . '/' . $className . '.php'; 
    if (file_exists($fileName)) { 
     require_once($fileName); 
     return; 
    } 
}; 

spl_autoload_register($callback); 
+0

Nigdy jej nie użyłem. W tym celu muszę się najpierw nauczyć. Więc gdzie mogę się tego nauczyć? Link może być pomocny. Z góry dziękuję – yusufiqbalpk