Пример #1
0
 public function __construct($config = array())
 {
     // Initialise variables.
     $this->methods = array();
     $this->message = null;
     $this->messageType = 'message';
     $this->paths = array();
     $this->redirect = null;
     $this->taskMap = array();
     if (defined('MDEBUG') && MDEBUG) {
         MLog::addLogger(array('text_file' => 'mcontroller.log.php'), MLog::ALL, array('controller'));
     }
     // Determine the methods to exclude from the base class.
     $xMethods = get_class_methods('MController');
     // Get the public methods in this class using reflection.
     $r = new ReflectionClass($this);
     $rMethods = $r->getMethods(ReflectionMethod::IS_PUBLIC);
     foreach ($rMethods as $rMethod) {
         $mName = $rMethod->getName();
         // Add default display method if not explicitly declared.
         if (!in_array($mName, $xMethods) || $mName == 'display') {
             $this->methods[] = strtolower($mName);
             // Auto register the methods as tasks.
             $this->taskMap[strtolower($mName)] = $mName;
         }
     }
     // Set the view name
     if (empty($this->name)) {
         if (array_key_exists('name', $config)) {
             $this->name = $config['name'];
         } else {
             $this->name = $this->getName();
         }
     }
     // Set a base path for use by the controller
     if (array_key_exists('base_path', $config)) {
         $this->basePath = $config['base_path'];
     } else {
         $this->basePath = MPATH_COMPONENT;
     }
     // If the default task is set, register it as such
     if (array_key_exists('default_task', $config)) {
         $this->registerDefaultTask($config['default_task']);
     } else {
         $this->registerDefaultTask('display');
     }
     // Set the models prefix
     if (empty($this->model_prefix)) {
         if (array_key_exists('model_prefix', $config)) {
             // User-defined prefix
             $this->model_prefix = $config['model_prefix'];
         } else {
             $this->model_prefix = $this->name . 'Model';
         }
     }
     // Set the default model search path
     if (array_key_exists('model_path', $config)) {
         // User-defined dirs
         $this->addModelPath($config['model_path'], $this->model_prefix);
     } else {
         $this->addModelPath($this->basePath . '/models', $this->model_prefix);
     }
     // Set the default view search path
     if (array_key_exists('view_path', $config)) {
         // User-defined dirs
         $this->setPath('view', $config['view_path']);
     } else {
         $this->setPath('view', $this->basePath . '/views');
     }
     // Set the default view.
     if (array_key_exists('default_view', $config)) {
         $this->default_view = $config['default_view'];
     } elseif (empty($this->default_view)) {
         $this->default_view = $this->getName();
     }
 }