Güvenli ve dinamik bir PHP sınıfının bir örneğini oluşturmak için nasıl?

0 Cevap php

Ben bir dosya foo.php var diyelim:

<?php
interface ICommand
{
     function doSomething();
}

class Foo implements ICommand
{
    public function doSomething()
    {
        return "I'm Foo output";
    }
}

?>

Ben tip Foo bir sınıf oluşturmak istiyorsanız ben kullanabilirsiniz:

require_once("path/to/Foo.php") ;
$bar = new Foo(); 

Ama ben bir Chain of Command Pattern oluşturduk ve ben tüm olası sınıfları kaydeder ve yapılandırma dosyasında mevcut dizelere dayalı bu sınıfların bir örneğini oluşturur bir yapılandırma dosyası olduğunu söylüyorlar.

register("Foo", "path/to/Foo.php");

function register($className, $classPath)
{
    require_once($classPath); //Error if the file isn't included, but lets 
                              //assume that the file "Foo.php" exists.
    $classInstance = new $className; //What happens here if the class Foo isn't 
                                     //defined in the file "Foo.php"? 

    $classInstance->doSomething(); //And what happens here if this code is executed at
                                   //all?
    //Etc...
}

Nasıl bu sınıflar aslında yapılandırma dosyası olduklarını söyledi nerede olduğundan emin olabilirim? Bir sınıf yoktur (ancak dosya) varsa ve ne başka açıklama olan dinamik olarak oluşturulan sınıfın bir örneğini oluşturur, ne olur?

0 Cevap