Example #1
0
 /**
  * Gets the main object from the parameters
  *
  * If no main object is set (eq first parameter is not an object), create it using class name.
  * Beware : the created object will then automatically be added to the beginning
  * of the parameters list.
  *
  * @param $class_name           string|object
  * @param $search_by_properties string[]
  * @return object
  */
 public function getMainObject($class_name = null, $search_by_properties = [])
 {
     if (is_object($class_name)) {
         $default_object = $class_name;
         $class_name = get_class($class_name);
     }
     reset($this->parameters);
     $object = $this->getObject(key($this->parameters));
     if (!$object || !is_object($object)) {
         if ($search_by_properties) {
             $object = $this->searchMainObject($class_name, $search_by_properties);
         }
         if ((!$object || !is_object($object)) && !$class_name) {
             $class_name = $this->uri->controller_name;
         }
     }
     if (!$object || !is_object($object) || isset($class_name) && !is_a($object, $class_name)) {
         $object = isset($default_object) ? $default_object : (isset($class_name) && @class_exists($class_name) ? Builder::create($class_name) : Set::instantiate($class_name));
         $this->parameters = array_merge([get_class($object) => $object], $this->parameters);
     }
     return $object;
 }