powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Замена параметров по умолчанию в конструкторе
5 сообщений из 5, страница 1 из 1
Замена параметров по умолчанию в конструкторе
    #38060853
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как дополнить параметры по умолчанию класса? Если параметр массив, как его заменить полностью и как с глубоким копированием?

В jQuery все это делается с помощью $.extend(). Есть ли в PHP что-то подобное?

Пример:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$obj = new Obj(array(
	'opt1' => 'val1',
	'opt2' => array('o1' => 1, 'o2' => 2)
));

class Obj {
	protected $opt1 = 'val0';
	protected $opt2 = array('o1' => 0, 'o2' => 0, 'o3' => 0);
	protected $opt3 = 'val0';

	public function __constuct($param) {
		if (isset($param['opt1'])) $this->opt1 = $param['opt1'];
		if (isset($param['opt2'])) $this->opt2 = $param['opt2'];
		if (isset($param['opt3'])) $this->opt3 = $param['opt3'];
	}
        ...
}
...
Рейтинг: 0 / 0
Замена параметров по умолчанию в конструкторе
    #38061549
http://php.net/manual/en/function.array-replace-recursive.php

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class Obj {

        private $_params = array(
            'opt1' => 'val0',
            'opt2' => array('o1' => 0, 'o2' => 0, 'o3' => 0),
            'opt3' => 'val0'
        );

	public function __constuct($params) {
		$this->_params = array_replace_recursive($this->_params, $params);
	}
        ...
}
...
Рейтинг: 0 / 0
Замена параметров по умолчанию в конструкторе
    #38061608
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Я сделал так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$opt1 = 'val0';
$opt2 = array('o1' => 0, 'o2' => 0, 'o3' => 0);
$opt3 = 'val0';

$param = array(
		'opt1' => 'val1',
		'opt2' => array('o1' => 1, 'o2' => 2)
	);
    
foreach ($param as $k => $v) {
    $$k = $v;
}
print_r($opt1);
print_r($opt2);
print_r($opt3);


Предлагаете заменить список параметров класса, массивом. И в программе потом придется обращаться к ним как $this->_params['opt']

Это распространенная практика? В крутых компаниях так все делают?
...
Рейтинг: 0 / 0
Замена параметров по умолчанию в конструкторе
    #38061871
не знаю, как делают в "крутых" компаниях ;) - но, я вижу результат твоего кода
Код: php
1.
2.
3.
val1
Array ( [o1] => 1 [o2] => 2 ) 
val0


Код: php
1.
$opt2['o3'] //как-бэ идёт лесом, а жаль! в классе оно использовалось 5! раз как значение 0! $)))
...
Рейтинг: 0 / 0
Замена параметров по умолчанию в конструкторе
    #38061986
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моем случае как раз так и должно быть, т.к. array это список разрешенных расширений (jpeg, jpg, gif, png), соответственно тут нужна именно перезапись, а не глубокое копирование. Но спрашивал про все случаи, как принято делать (если принято, вообще)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Замена параметров по умолчанию в конструкторе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]