Merhaba arkadaşlar,
Bir projemde kullanmak üzere değişik bir veri toplama sistemi hazırlıyorum. Küçük bir yerde takıldım.
Olay şu şekilde işliyor; pingpong/module paketini kullanarak modüller oluşturdum. Her modül altında "StatisticsController" adında bir sınıf var ve o modüle ait istediğim istatistikleri toplayarak geri döndürüyor.
Önce tüm modülleri topluyorum. Ardından modülleri tek tek kontrol ederek istatistik sınıfı var mı diye kontrol ediyorum. Sınıf var ise "get_statistic_" ile başlayan methodu bularak verisini almaya çalışıyorum. Takıldığım nokta tam olarak burası. Metoda kadar kodlar hatasız çalışıyor. Sınıflar farklı namespace altında oldukları için ulaşamıyorum. Tam yol verek denediğimde de 500 sunucu hatası veriyor.
use değimi kod ortasında kullanılamadığı için namespace erişimi yapamadım. Bir çözüm öneriniz var mı ?
// -------------------------------------------------------------------------------------------------------------
// İstatistik fonksiyonlarını toplamk için eklendi
// -------------------------------------------------------------------------------------------------------------
$modules = [];
foreach (Module::all() as $module) {
$namespace = explode('\\', $module->getPath());
$modules[] = [
'name_studly' => $module->getStudlyName(),
'name_lower' => $module->getLowerName(),
'path' => $module->getPath(),
'path_assets' => $module->getExtraPath('Assets'),
'status' => $module->enabled() ? 1 : 0,
'order' => $module->get('order'),
'namespace' => end($namespace)
];
}
$statistics = [];
foreach ($modules as $module) {
$class = 'Modules\\' . $module['namespace'] . '\\Http\\Controllers\\SuperAdmin\\StatisticsController';
if(class_exists($class)){
foreach (get_class_methods($class) as $method) {
// $object = new ${$class}(); // 1. Yöntem
$object = new $class(); // 2. Yöntem
echo "<pre>";
print_r($object);
echo "</pre>";
die;
if(preg_match("#^get_statistic_(.*)$#i", $method)){
// Buraya kadar geliyor.
$this->statistics[$module['namespace']][$method] = $object->{$method}(); // 1. Yöntem. Daha sınıfdan bir örnek oluşturamadığım için burasından şüpheliyim.
$this->statistics[$module['namespace']][$method] = $object->$method(); // 2. Yöntem. Daha sınıfdan bir örnek oluşturamadığım için burasından şüpheliyim.
}
}
}
}
// -------------------------------------------------------------------------------------------------------------
<?php namespace Modules\ISG\Http\Controllers\SuperAdmin;
use App\Http\Controllers\SuperAdmin\SuperAdminController;
use DB;
class StatisticsController extends SuperAdminController {
public function get_statistic_total_areas()
{
$total_areas = DB::table('areas')->count();
return [
'title' => 'Total Area Count',
'content' => $total_areas
];
}
}