Ben her zaman dizeleri üzerinden onları başvurarak yöntemlerini çağırarak hakkında endişe ettik.
Temelde benim şimdiki senaryoda, ben veri modeli nesneleri (örn. SomeDataMapper :: GetAll (1234)) bir dizi oluşturmak ve geri dönmek için statik veri mapper yöntemleri kullanın. Modeller Active Record tasarım deseni izleyin. Bazı durumlarda, orada döndürülen kayıtların yüzlerce olabilir, ve ben tek seferde belleğe her şeyi koymak istemiyorum. Yani, aşağıdaki gibi, kayıtlar arasında sayfasına bir yineleyici kullanıyorum
$Iterator = new DataMapperIterator('SomeDataMapper', 'getAll', array(1234));
while ($Iterator->hasNext()) {
$data = $Iterator->next();
}
Bunu yapmanın iyi bir yolu var mı? Bu mapper sınıfın adını ve yöntemi dizeleri olarak geçmek kötü bir fikir mi? Ben bu fikri diğer dillere taşınabilir olmadığını merak. Bu Ruby ve Python gibi diller için genellikle doğrudur? Eğer öyleyse, herkes için iyi bir alternatif tavsiye edebilir?
Bilginize, gelecekte insanların refernce için, ben böyle yöntemini çağırın:
$method = new ReflectionMethod($className, $methodName);
$returnValue = $method->invokeArgs(null, $parameters);