Масив в construct

pro12

Registered
PHP:
public $title;
    public $new;
    
    public function __construct($args = array(),  $data     ) {
         
                            $this->title = $data['title'] ;
                            var_dump($data);
 	}
Защо след $args = array() като добавя още една променлива ми дата грешка Warning: Missing argument 2 for Models\News_Model::__construct()?
 
Защото всъщност аргумента липсва. Има два варианта. Или да му сложиш стойност по подразбиране, или да го подадеш в обекта.

Код:
$arr = array('one', 'two');
$data = 'three';
$model = new Models\News_Model($arr, $data);
 
А слагаш ли нещо за втори параметър, като си правиш обектите?
Отдавна не съм писал на PHP, ама знам, че дори и той има type hinting за масивите:

PHP:
class Somthing {
    public function __construct($args = array(), array $data) {
        // ...
    }
}

Така изглежда по-яко и IDE-то ша може да ти помогне (за PhpStorm съм сигурен, за другите предполагам). :D
 
Когато имаш задължителни аргументи, които да очакваш, винаги ги слагай най-отпред, а отзад слагай тези със стойности по подразбиране.

PHP:
public function __construct($data, $args = array()) {}

Така не си задължен да подаваш втория аргумент, освен ако логиката ти не позволява, но ако логиката ти не го позволява, тогава няма нужда да му задаваш стойност по подразбиране по този начин.
 

Back
Горе