जवाबों:
foreach (glob("classes/*.php") as $filename)
{
include $filename;
}
get_include_path()
अभी भी ऑटो लोडिंग ऑर्डर निर्धारित नहीं कर सकता (बेस क्लास को लोड किए गए क्लास के बाद, त्रुटियों के कारण लोड किया जा सकता है)
यह तरीका है कि मैं PHP 5 में कई फ़ोल्डर्स से बहुत सारी कक्षाएं शामिल करता हूं। यह केवल तब ही काम करेगा जब आपके पास कक्षाएं होंगी।
/*Directories that contain classes*/
$classesDir = array (
ROOT_DIR.'classes/',
ROOT_DIR.'firephp/',
ROOT_DIR.'includes/'
);
function __autoload($class_name) {
global $classesDir;
foreach ($classesDir as $directory) {
if (file_exists($directory . $class_name . '.php')) {
require_once ($directory . $class_name . '.php');
return;
}
}
}
मुझे लगता है कि यह एक पुरानी पोस्ट है ... लेकिन अपने ग्राहकों को शामिल न करें ... इसके बजाय __autoload का उपयोग करें
function __autoload($class_name) {
require_once('classes/'.$class_name.'.class.php');
}
$user = new User();
फिर जब भी आप एक नए वर्ग को कॉल करते हैं जिसे अभी तक php में शामिल नहीं किया गया है तो वह __autoload को ऑटो करेगा और आपके लिए इसमें शामिल करेगा
यह सिर्फ कार्स्टेन कोड का एक संशोधन है
function include_all_php($folder){
foreach (glob("{$folder}/*.php") as $filename)
{
include $filename;
}
}
include_all_php("my_classes");
2017 में यह कैसे करें:
spl_autoload_register( function ($class_name) {
$CLASSES_DIR = __DIR__ . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR; // or whatever your directory is
$file = $CLASSES_DIR . $class_name . '.php';
if( file_exists( $file ) ) include $file; // only include if file exists, otherwise we might enter some conflicts with other pieces of code which are also using the spl_autoload_register function
} );
PHP प्रलेखन द्वारा अनुशंसित यहाँ: ऑटोलॉडिंग कक्षाएं
autoload
खेल में केवल तभी आएगा जब कोई व्यक्ति कक्षा की वस्तु बनाने के लिए प्रयास करता है जो अभी तक लोड नहीं किया गया था।
आप set_include_path का उपयोग कर सकते हैं :
set_include_path('classes/');
classes/
का उपयोग करते समय चूक करने में सक्षम बनाता है include
/require
यदि आप सभी को एक निर्देशिका और उसकी उपनिर्देशिकाओं में शामिल करना चाहते हैं:
$dir = "classes/";
$dh = opendir($dir);
$dir_list = array($dir);
while (false !== ($filename = readdir($dh))) {
if($filename!="."&&$filename!=".."&&is_dir($dir.$filename))
array_push($dir_list, $dir.$filename."/");
}
foreach ($dir_list as $dir) {
foreach (glob($dir."*.php") as $filename)
require_once $filename;
}
यह मत भूलो कि यह आपकी फ़ाइलों को शामिल करने के लिए वर्ण-क्रम का उपयोग करेगा।
The entries are returned in the order in which they are stored by the filesystem.
- php.net/manual/en/function.readdir.php
यदि आपकी कक्षा को एक बार शामिल करने के लिए कक्षाओं का एक गुच्छा शामिल करना है, जिसका आप उपयोग कर सकते हैं:
$directories = array(
'system/',
'system/db/',
'system/common/'
);
foreach ($directories as $directory) {
foreach(glob($directory . "*.php") as $class) {
include_once $class;
}
}
इस तरह आप केवल क्लास वाली php फाइल पर क्लास को परिभाषित कर सकते हैं और पूरी सूची नहीं $thisclass = new thisclass();
कितनी अच्छी तरह से यह सभी फ़ाइलों को संभालता है? मुझे यकीन नहीं है कि इसके साथ थोड़ी गति में कमी हो सकती है।
यदि फ़ाइलों के बीच कोई निर्भरता नहीं है ... यहाँ सभी subdirs में सभी php फ़ाइलों को शामिल करने के लिए एक पुनरावर्ती कार्य है:
$paths = array();
function include_recursive( $path, $debug=false){
foreach( glob( "$path/*") as $filename){
if( strpos( $filename, '.php') !== FALSE){
# php files:
include_once $filename;
if( $debug) echo "<!-- included: $filename -->\n";
} else { # dirs
$paths[] = $filename;
}
}
# Time to process the dirs:
for( $i=count($paths)-1; $i>0; $i--){
$path = $paths[$i];
unset( $paths[$i]);
include_recursive( $path);
}
}
include_recursive( "tree_to_include");
# or... to view debug in page source:
include_recursive( "tree_to_include", 'debug');
<?php
//Loading all php files into of functions/ folder
$folder = "./functions/";
$files = glob($folder."*.php"); // return array files
foreach($files as $phpFile){
require_once("$phpFile");
}
निर्देशिका में फ़ाइलों को शामिल करने के लिए कोई फ़ंक्शन () नहीं लिखें। आप चर स्कोप खो सकते हैं, और "वैश्विक" का उपयोग करना पड़ सकता है। बस फाइलों पर लूप।
इसके अलावा, आप एक फ़ाइल में एक वर्ग का नाम है जो अन्य फ़ाइल में परिभाषित अन्य वर्ग के लिए विस्तारित होगा जब - अभी तक शामिल नहीं है जो कठिनाइयों में चला सकते हैं। तो सावधान रहें।