উত্তর:
foreach (glob("classes/*.php") as $filename)
{
include $filename;
}
get_include_path()
এখনও লোডিং অর্ডারটি স্বয়ংক্রিয়ভাবে নির্ধারণ করতে পারে না (বেস ক্লাসটি বর্ধিত শ্রেণীর পরে লোড করা হতে পারে, ত্রুটিগুলির ফলস্বরূপ)
এখানে পিএইচপি 5-তে বেশ কয়েকটি ফোল্ডার থেকে প্রচুর ক্লাস অন্তর্ভুক্ত করার পদ্ধতিটি এখানে রয়েছে only যদি আপনার ক্লাস থাকে তবেই এটি কাজ করবে though
/*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;
}
}
}
আমি বুঝতে পারি এটি একটি পুরানো পোস্ট তবে ... আপনার ক্লাসগুলি অন্তর্ভুক্ত করবেন না ... পরিবর্তে __আউটোলোড ব্যবহার করুন
function __autoload($class_name) {
require_once('classes/'.$class_name.'.class.php');
}
$user = new User();
তারপরে আপনি যখনই একটি নতুন ক্লাস কল করবেন যা এখনও অন্তর্ভুক্ত করা হয়নি তবে পিএইচপি স্বয়ংক্রিয়ভাবে আগুন নেবে __আউটলোয়াদ এবং এটি আপনার জন্য অন্তর্ভুক্ত করবে
এটি কার্স্টেনের কোডের একটি পরিবর্তন মাত্র
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
} );
এখানে পিএইচপি ডকুমেন্টেশন দ্বারা প্রস্তাবিত: অটোলয়েডিং ক্লাস
autoload
কেউ তখনই খেলতে আসবে যখন কেউ চেষ্টা করবে অর্থাত্ লোড হয়নি এমন শ্রেণীর বস্তু তৈরি করার জন্য।
আপনি set_incolve_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;
}
}
এইভাবে আপনি কেবল ক্লাস সমন্বিত পিএইচপি ফাইলে ক্লাসটি সংজ্ঞায়িত করতে পারেন এবং পুরো তালিকা নয় $thisclass = new thisclass();
যতক্ষণ না এটি সমস্ত ফাইল পরিচালনা করে? আমি নিশ্চিত নই যে এর সাথে কিছুটা গতি কমে যেতে পারে।
যদি ফাইলগুলির মধ্যে কোনও নির্ভরতা না থাকে ... সমস্ত সাবডিয়ারগুলিতে সমস্ত পিএইচপি ফাইল অন্তর্ভুক্ত করার জন্য এখানে একটি পুনরাবৃত্ত ফাংশন রয়েছে:
$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");
}
ডিরেক্টরিতে ফাইল অন্তর্ভুক্ত করতে কোনও ফাংশন () লিখবেন না। আপনি ভেরিয়েবল স্কোপগুলি হারাতে পারেন এবং "গ্লোবাল" ব্যবহার করতে হতে পারে। কেবল ফাইলগুলিতে লুপ করুন।
এছাড়াও, যখন আপনি অন্তর্ভুক্ত ফাইলটির একটি শ্রেণীর নাম থাকে যা অন্য ফাইলটিতে সংজ্ঞায়িত অন্য শ্রেণিতে প্রসারিত হয় - যা এখনও অন্তর্ভুক্ত নেই আপনি অসুবিধাতেও ডেকে আনতে পারেন। তাই সতর্কতা অবলম্বন করা.