php - পিএইচপি গ্রুপ




একটি স্ট্রিং সঙ্গে পিএইচপি ক্লাস উদাহরণ তৈরি (3)

আমার দুটি ক্লাস আছে:

ক্লাস ClassOne { } এবং ক্লাস ClassTwo {} । আমি একটি স্ট্রিং পেয়ে যা "এক" বা "দুই" হতে পারে। যেমন একটি দীর্ঘ সুইচ বিবৃতি ব্যবহার করার পরিবর্তে:

switch($str) {
   case "One":
       return new ClassOne();
   case "Two":
       return new ClassTwo();
}

যাই হোক না কেন উপায় আমি একটি স্ট্রিং ব্যবহার করে একটি উদাহরণ তৈরি করতে পারেন, অর্থাৎ new Class("Class" . $str);

ধন্যবাদ,

জোএল


আপনি একটি নতুন বর্গ তৈরি করতে নিচের সিনট্যাক্স ব্যবহার করতে পারেন (যদি আপনি একটি factory তৈরি করছেন তবে এটি সহজ):

$className = $whatever;
$object = new $className;

একটি হিসাবে (ব্যতিক্রমীভাবে অশোধিত) উদাহরণ কারখানা পদ্ধতি:

public function &factory($className) {

    require_once($className . '.php');
    if(class_exists($className)) return new $className;

    die('Cannot create new "' . $className . '" class - includes not found or class unavailable.');
}

চলুন ClassOne হিসাবে সংজ্ঞায়িত করা যাক:

public class ClassOne
{
    protected $arg1;
    protected $arg2;

    //Contructor
    public function __construct($arg1, $arg2)
    {
        $this->arg1 = $arg1;
        $this->arg2 = $arg2;
    }

    public function echoArgOne
    {
        echo $this->arg1;
    }

}

পিএইচপি প্রতিফলন ব্যবহার করে;

$str = "One";
$className = "Class".$str;
$class = new \ReflectionClass($className);

একটি নতুন ইনস্ট্যান্স তৈরি করুন:

$instance = $class->newInstanceArgs(["Banana", "Apple")]);

একটি পদ্ধতি কল করুন:

$instance->echoArgOne();
//prints "Banana"

একটি পদ্ধতি হিসাবে একটি পরিবর্তনশীল ব্যবহার করুন:

$method = "echoArgOne";
$instance->$method();

//prints "Banana"

একটি বস্তু তৈরি করার জন্য কাঁচা স্ট্রিং ব্যবহার করার পরিবর্তে প্রতিফলন ব্যবহার করে আপনি আপনার বস্তুর উপর আরও ভাল নিয়ন্ত্রণ এবং সহজ পরীক্ষার যোগ্যতা দেয় (পিএইচপি ইউনাইটেড প্রতিফলনের উপর নির্ভর করে)






php