New to OOP in PHP
Benim işlevlerinden biri çalıştırmadan önce idam edilecek başka bir işlev gerektirir. Ben bu kontrol edebilirsiniz bir yolu var mı?
Eh, kolay çözüm ihtiyacı yöntemini çalıştırmadan önce sadece bu yöntemi çağırmak olacaktır. Eğer yöntemini her zaman çalıştırmak istemiyorum, ama nesnenin bazı dahili durum geçerlidir sadece, yapacağın varsa
class Foo
{
protected $_someState = 'originalState';
public function runMeFirst()
{
// code ...
$this->_someState = 'changedState';
}
public function someMethod()
{
if(!$this->_someState === 'changedState') {
$this->runMeFirst();
}
// other code ...
}
}
Sürece kontrol denilen ve gereken yöntem ve devlet aramak istediğiniz yöntemi olarak aynı sınıfın içinde olduğu gibi, yukarıdaki muhtemelen en iyi çözümdür. Başka bir yerde önerilen gibi, sınıfta ayrı bir fonksiyonu haline someState için kontrol yapabilir, ama kesinlikle gerekli değil. Ben örneğin, kod tekrarını önlemek için birden fazla yerden durumunu kontrol etmek vardı, ben sadece bunu yapardım üzerinde beyanı ve eğer tekrar aynı yazmak zorunda.
Yöntem çağrısı dışında bir nesne durumuna bağlıdır ise, birkaç seçeneğiniz vardır. Biraz usecase bağlı olarak, bu durumda senaryo hakkında bize daha fazla bilgi verin.
İkinci fonksiyon bu duruma hakkında bilmeniz gereken neden diğer fonksiyon (ilk aranmalıdır biri) bazı devlet manipüle edecek, bu. Bunun için yerleşik bir php bilmem ama ben sonunda bu durumu hakkında bilgi verir başka bir işlevi, örneğin yaratacak isReadyToRunSomething
, isValid
, hasConnection
.. ya da her neyse .. o çalıştırmak için izin olup olmadığını görmek için, ikinci işlevi başında bu işlevi kullanın.