v2.5.2
Giriş yap

PHP otomatik class tanımları

desrana
409 defa görüntülendi

Merhaba dostlar,
PHP ile class başında tanımlar yapıyoruz, örneğin;

    class User
    {
    
        public string $name = "";
    
    }

Sorum şu olacak, ben en başta tanım yapmadan class içerisindeki bir fonksiyonda dizi ile yapabilimiyim bu tanımları.

Örneğin şöyle oluyor;

    foreach($attiributes as $key => $val)
    {
        $this->{$key} = $val;
    }

fakat burada tanımın public, private, static vb. olduğunu tanımlayamıyorum.

Bunları tanımlamanın bir yolu var mı ? :)

@tayfunerbilen

desrana
877 gün önce

@m100 teşekkür ederim cevabın için fakat bahsettiğim tam olarak bu değil :(

Tekrar bir örnek ile anlatmak istiyorum.

    class User
    {
    
        public string $name = "";
        public string $lastname = "";
        public int $rank = "";
        public array $permission = [];
    
    }

Bu şekilde modelimin içerisinde kullanacağım tanımları ekliyorum.

Ardından;

    class User
    {
    
        public function attiributes(): array
        {
            return ["firstname", "lastname", "rank", "permission"]
        }
    
    }

buradada modelimdeki attiribuitleri (bunlar veritabanımdaki name'ler) ekliyorum.
Şimdi hem yukarıda tanımladım, hem aşağıda attiributes içinde.

Tabiki, üşengeçlik demeden bunu otomatize etmeye çalışıyorum. Yani attiributes içerisinde öyle birşey yapayımki;
dizideki elemanları kendi tanımlansın.
Mesela;

    class User
    {
    
        public function attiributes(): array
        {
            return [
                "firstname" => "public string"
                "lastname" => "public string" 
                "rank" => "public int"
                "permission" => "public array"
            ]
        }
    
    }

Umarım anlatabilmişimdir :)
Şimdi neden diyecek olursanız; Ben bu attiributes'i sadece bunun için kullanmıyorum. Dizi çıktısında hem label, hem kural, hemde diğer istediğim tanımları ekliyorum. Bu sayede tek bir fonksiyon içerisinden hem kendisine hemde extend olduğu sınıflara dağıtıp kullanabiliyorum.