1. এটি কি দৃশ্যমান উপায়ে ডাব্লুপি পারফরম্যান্সের উপর প্রভাব ফেলে?
যদি এটি কিছু ছোট ফাইলের জন্য প্রকৃতভাবে প্রভাবিত করে, তবে তার প্রভাবটি ডাব্লুপি: পিএইচপি এবং সার্ভারের কার্যকারিতার চেয়ে কম রয়েছে। এটি কি আসলেই প্রভাব ফেলে? আসলে তা না. তবে আপনি কেবল পারফরম্যান্স পরীক্ষা নিজেই করা শুরু করতে পারেন।
২. এটি সব 1 টি ফাইলের মধ্যে রাখা ভাল (ফাংশন.এফপি)
এখন প্রশ্ন "ভাল কি"? সামগ্রিক ফাইল (গুলি) লোডিং সময় থেকে? ফাইল সংস্থার দৃষ্টিকোণ থেকে? যাইহোক, এটি কোনও পার্থক্য করে না। এটি এমনভাবে করুন যাতে আপনি ওভারভিউটি looseিলে না রাখেন এবং ফলটি এমনভাবে বজায় রাখতে পারবেন যা আপনার জন্য আনন্দদায়ক।
৩. এটি সম্পর্কে সবচেয়ে ভাল উপায় কী?
আমি কি স্বাভাবিকভাবে করতে কেবল কোথাও hooking হয় ( plugins_loaded
, after_setup_theme
ইত্যাদি - উপর নির্ভর করে আপনার কি কি প্রয়োজন) এবং তারপর শুধু তাদের সব প্রয়োজন:
foreach ( glob( plugin_dir_path( __FILE__ ) ) as $file )
require_once $file;
যাইহোক, আপনি এটিকে আরও জটিল এবং নমনীয়ও করতে পারেন। সেই উদাহরণটি একবার দেখুন:
<?php
namespace WCM;
defined( 'ABSPATH' ) OR exit;
class FilesLoader implements \IteratorAggregate
{
private $path = '';
private $files = array();
public function __construct( $path )
{
$this->setPath( $path );
$this->setFiles();
}
public function setPath( $path )
{
if ( empty( $this->path ) )
$this->path = \plugin_dir_path( __FILE__ ).$path;
}
public function setFiles()
{
return $this->files = glob( "{$this->getPath()}/*.php" );
}
public function getPath()
{
return $this->path;
}
public function getFiles()
{
return $this->files;
}
public function getIterator()
{
$iterator = new \ArrayIterator( $this->getFiles() );
return $iterator;
}
public function loadFile( $file )
{
include_once $file;
}
}
এটি এমন একটি বর্গ যা মূলত একই রকম হয় (পিএইচপি 5.3+ প্রয়োজন)। সুবিধাটি হ'ল এটি কিছুটা সূক্ষ্ম দানযুক্ত, যাতে আপনি সহজেই কোনও নির্দিষ্ট কাজ সম্পাদন করতে হবে এমন ফোল্ডারগুলি থেকে ফাইলগুলি লোড করতে পারেন:
$fileLoader = new WCM\FilesLoader( 'assets/php' );
foreach ( $fileLoader as $file )
$fileLoader->loadFile( $file );
হালনাগাদ
আমরা যেমন একটি নতুন, পোস্ট পিএইচপি v5.2 বিশ্বে বাস করি, আমরা এর ব্যবহার করতে পারি \FilterIterator
। সংক্ষিপ্ত রূপটির উদাহরণ:
$files = new \FilesystemIterator( __DIR__.'/src', \FilesystemIterator::SKIP_DOTS );
foreach ( $files as $file )
{
/** @noinspection PhpIncludeInspection */
! $files->isDir() and include $files->getRealPath();
}
যদি আপনাকে পিএইচপি v5.2 দিয়ে আটকাতে হয় তবে আপনি এখনও \DirectoryIterator
একই কোডটি দিয়ে যেতে পারেন ।