Nesneler olarak diziler

5 Cevap php

Orada beni bir nesne olarak bir dizi kullanmak için izin veren bir yöntem?

Benim ana sınıfında aşağıdaki kodu var

function  __construct()
{
    	require 'config.php';
    	$this->config = new PHPSO_Config();
}

PHPSO_Config sınıf şöyle nerede

class PHPSO_Config
{
    /**
     * The administrators email address
     */
    var $adminEmail = 'user@domain.tld'; //I'm using this email to test
}

bu yüzden aynı şeyi başarmak ve bir ikinci sınıf yaratmadan bir nesne olarak yapılandırma değişkenler erişmek mümkün olabilir?

5 Cevap

Kullanarak bir nesneye bir dizi çevirebilirsiniz

$myObject = (object) $myarray;

böylece aşağıdaki (denenmemiş) çalışması gerekir:

function  __construct()
{
        require 'config.php';
        $this->config = (object) array("username" => "root");
}

sonra $ class-> config-> username çalışmalıdır.

Siz, örneğin, PHP5 overloading sizin sınıf yapılandırma sınıfı tarafından sağlanan özelliklere sahip olduğunu görünüyor yapmak için kullanabilirsiniz böyle bir şey:

class MyClass
{
    private $config;

    function  __construct()
    {
        require 'config.php';
        $this->config = new PHPSO_Config();
    }


    public function __get($name) {
        if (property_exists($this->config, $name)) {
            return $this->config->$name;
        }
        return null;
}

Sonra böyle bir şey yapıyor:

$config=new MyClass;
echo $config->adminEmail;

Iç yapılandırma sınıfının adminEmail üye değişkeni görmeye neden olur.

Bu neredeyse bir sınıfın çalışma zamanı uygulama zamanında seçilebilir bir Strategy Pattern, olduğunu.

Ben tam olarak ne istediğinizi emin değilim, ancak bir nesneye bir dizi çevirebilirsiniz. Onlar oldukça doğru çalışmıyor gibi olsa sayısal endeksleri kullanmayın emin olun;

$config = array('adminEmail' => 'user@domain.tld');
$this->config = (object)$config;

Belki burada bir şey eksik ama bir dizi ile config sınıf değiştirmek için çalışıyoruz, sonra bir nesneye döküm? Bana biraz deli geliyor. Ben sadece, bir yapılandırma sınıf var onun yolu daha iyi tasarım olacaktır.

Onun en iyi sen sınıfları olmalıdır diziler yapmak dolaşmak değildir.

Eh evet

şahsen ben kullanmak istiyorum bir tekniktir vardır:

you create a file call whatever you want (i.e. config.php) then write this in it forexample:

Whenever you wanted use these information you have to just put "require_once "config.php";" above your code like in index.php and all definition will be in that page. For example you can read database server name by typing $DB_SERVER.

Ben olsaydım size proje her yerde kullanmak ve hayatı kolaylaştıran bir dosyadan sadece onu korumak, çünkü ben ona sadık olacaktır.