__autoload karıştırmak?

2 Cevap php

Ben mesela dir_name(__FILE__)."/classes/".$className ile dosyası içeren bir __autoloader() işlevi var ki benim init.php dahil geliştirmek zaman, birçok müşteri ile bir sunucu var.

Ama dün ben sunucu belirli bir sınıf bulamadı gördüm, ben apache restartat ve daha sonra tekrar çalıştı.

Her müşteri ... Bu kendi init.php (ve aynı sunucu üzerinde bu nedenle birçok __ autoloads)

customer1/init.php            : holds __autoload()
customer1/classes/class.php

customer2/init.php            : holds __autoload()
customer2/classes/class.php

Bazı testler yapmadım ve ben sorunu yeniden oluşturmaya çalışın önce birisi soruma cevap verebilir umuyoruz, ama sen aynı anda 2 veya daha fazla istekleri olsun php yanlış autoload fonksiyonunu almak için mümkün olduğunu düşünüyor musunuz?

Çözeltinin spl_autoload_register mi?

Bazı fikirler veya beyin fırtınası için çok teşekkürler.

2 Cevap

Benim tahminim sizin __ autoload () işlevleri biri veya yanlış init.php dosyayı dahil ya bir yazım hatası olması gerektiğidir.

Ayrıca, dir_name () yok, bunun yerine) (dirname olarak değiştirmek gerekir ya da yeni DIR sabiti , aynı etki için eğer 'kullanabilirsiniz PHP> = 5.3 kullanılarak yeniden.

EDIT: Yveyaumlarınız ışığında, kullanım kullanmanız gerekir:

require(realpath(dirname(__FILE__)) . '/classes/' . $className);

veya

require(realpath(__DIR__) . '/classes/' . $className);

Her PHP isteği, tamamen ayrı Eğer aynı PHP isteği __autoload() adında iki işlevi olması için aslında imkansız olduğunu, bu yüzden müdahale edemez. Olası sorunlar:

  • Sen yanlış müşterinin init.php dahil
  • Sen no autoloading tüm var olduğu durumda init.php dosya eklemeyi unuttum.