Cevaplar
-
İkinci sorundan başliyim,
php'de autoloader belirlediğin zaman bu autoloader tüm include işlemlerini yapar, fakat bilmen gereken şu ki, tüm classlar include olmalıdır.
ilk sorunun cevabı ise şu,
diyelim ki 3 araba için class yazacaksın. Her arabanın 4 tekeri ve 4 kapısı var diyelim. motoru da olur tabii ki, yani en parent class en genel özellikleri taşır.
class Araba { protected $motor; protected $teker = 4; protected $kapi = 4; public function calistir() { //temel çalışma işlemleri... } }
Diyelim ki 2 kapılı, şifre ile çalışabilen bir araba oluşturmak istedin, ama diğer özelliklerinin tümü üst classta yer alacak:
class IkiKapiliAraba extends Araba { protected $kapi = 2; public function calistir(); { if ($this->sifreSor()) //eğer şifre doğruysa { parent::calistir(); } } private function sifreSor() { } }
gördüğün gibi arabanın tamamını yeniden tanımlamadım, var olan araba classından yeni bir araba ürettim. subclass mantığı budur. "Inheritance" temel mantığı budur. Daha kolay dediğin yöntemde sürekli aynı kodu yazmaya kalkacaksın, object oriented yazmak istiyorsan ve kod tekrarı yapıyorsan biyerlerde hata yapıyorsun demektir.-
serdar_alkan
Cevabınız için teşekkür ederim öncelikle. Daha kodlamaya başlamadım. Şu an tasarım aşamasındayım. İşte bu noktada takıldım. Yani bir class da yeni bir metot mu tanımlayım yoksa oluşturduğum bir class dan başka bir iş yapan bir başka class mı türeteyim noktasında. _autoloader ı biliyorum. Ancak birşey sormak istiyorum. autoloader içindeki class lar bir kere çağrılsın tüm sistemde kullanılsın gibi birşey var mı? Yani her ayrı sayfamda bu çağırıyı yapmak zorunda mıyım?12 yıl önce yazılmış -
fka
zaten bir autoloader ile class bir kere include olur. iki kere include edersen php hata verecektir.12 yıl önce yazılmış -
serdar_alkan
Misal index.php de çağırdığım zaman, bu fonksiyonları icerik.php de de kullanabilir miyim? icerik.php de tekrar autoloder çağrısı yapmama gerek yok mu?12 yıl önce yazılmış -
fka
index.php ile icerik.php arasındaki bağ ile alakalı. fakat iki defa zaten include edemezsin. istesen de.12 yıl önce yazılmış
-