nasıl php sınıf sabitler olarak hiçbir diziler etrafında alabilirsiniz?

3 Cevap php

Ben bir statik yöntemi ile bir sınıf var. Geçirilen bir dize argümanı bir kümesinin bir üyesi olduğunu kontrol etmek için bir dizi var. Ancak, statik yöntemi ile, ben bir uninstantiated sınıfında sınıf özelliği başvuru yapamazsınız, ne de ben bir sınıf sabiti olarak bir dizi olabilir.

Ben sert statik yöntemi dizi kod olabilir varsayalım, ama ben bunu değiştirmek için gerekiyorsa o zaman, ben iki yerde değiştirmek için hatırlamak gerekiyor. Bunu önlemek istiyorum.

3 Cevap

Talep üzerine dizi oluşturmak ve bunu dönecektir özel statik işlev oluşturabilirsiniz:

class YourClass {
    private static $values = NULL;
    private static function values() {
        if (self::$values === NULL) {
            self::$values = array(
                'value1',
                'value2',
                'value3',
            );
        }
        return self::$values;
    }
}

Ben başka bir dosyada diziler koymak ve sonra ihtiyacınız olan her yerde dosyası içerir.

Ben gerçekten really sabit zaman soruyu anlamaya yaşıyorum. İşte anladım aslında ne olduğunu:

I need to maintain a proper set, where no two elements are the same.

PHP bile SPL, bir dizi türü yok! Biz bir dizi işlevselliğini taklit ama aklınıza gelebilecek herhangi bir çözüm hoş değil. Burada temiz olduğunu düşünüyorum budur:

<?php

class Set {

    private $elements = array();

    public function hasElement($ele) {
        return array_key_exists($ele, $elements);
    }

    public function addElement($ele) {
        $this->elements[$ele] = $ele;
    }

    public function removeElement($ele) {
        unset($this->elements[$ele]);
    }

    public function getElements() {
        return array_values($this->elements);
    }

    public function countElements() {
        return count($this->elements);
    }

}

Örnek kullanım:

<?php

$animals = new Set;
print_r($animals->getElments());
$animals->addElement('bear');
$animals->addElement('tiger');
print_r($animals->getElements());
$animals->addElement('chair');
$animals->removeElement('chair');
var_dump($animals->hasElement('chair'));
var_dump($animals->countElements());