![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| bobroff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Здравствуйте. Думаю вопрос простой, но самостоятельно ответ найти не удалось.
К примеру есть класс: class db { var $db_login="root"; var $db_password="root"; var $db_host="localhost"; var $db_connection; function db_connect($host,$login,$password) { $this->db_connection=mysql_connect($host,$login,$password); } } Как сделать следующее: при вызове метода db_connect, если не переданы параметры $host, $login, $password, то устанавливаются параметры по умолчанию: $db_login, $db_password, $db_host. Код, вида: function db_connect($host=$this->db_host,$login=$this->db_login,$password=$this->db_password) { $this->db_connection=mysql_connect($host,$login,$password); ...в не работает. Самому, как новичку, приходит в голову только проверка каждого параметра через isset(). Но, мне кажется, должно быть более простое решение. Подскажите. |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
|
|||
|
||||
| bobroff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Это слишком просто. Вообще, эти переменные/константы будут определяться в другой подключаемой библиотеке.
|
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
bobroff,
как вариант объявлять функцию без параметров, в самой функции получать переданные параметры, если чего-то нехватает, то global $var; и юзать. У вас же класс, тогда без global. Это сообщение отредактировал(а) enof - 20.3.2009, 23:13 |
|||
|
||||
| bobroff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Вроде подсказали более простое решение:
PHP: <?php class a { const DEFAULT_HOST = 'localhost'; // ... public function db_connect($host = self::DEFAULT_HOST, // ...) { Буду пробовать. |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
bobroff,
|
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Самый простой вариант, ИМХО
Если есть желание, пишите конфиги с возможностью перезаписи значений дефолтными в случае их отсутствия. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| bobroff |
|
||||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
В итоге пока получилось следующее:
config.php:
db.module:
В целом работает, параметры по умолчанию устанавливает. Но опять же небольшой вопрос. Когда создаешь новый объект из этого класса:
Все ок.
Тоже все ок: выдвет ошибку подключения, т.к. "server" не существует. А когда хочу, например, выбрать другую базу, пропуская указание сервера (т.е. скрипт должен подставить сервер по-умолчанию):
Выдает ошибку: "Parse error: syntax error, unexpected ',', expecting ')' in..." В чем тут ошибка? Почему нельзя пропустить параметр? Когда пишешь вот так:
Все ок. |
||||||||||||
|
|||||||||||||
| IZ@TOP |
|
||||||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
http://forum.vingrad.ru/index.php?showtopi...t&p=1818424 этот пост тебе поможет
Передавай null в качестве значения. Но, на твоем месте, я бы вынес в конфиг эти параметры и считывал оттуда.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
||||||
|
|||||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |