| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Значения переменных функции(метода) в классе |
| Автор: bobroff 20.3.2009, 22:53 |
| Здравствуйте. Думаю вопрос простой, но самостоятельно ответ найти не удалось. К примеру есть класс: 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 20.3.2009, 22:56 | ||
|
| Автор: bobroff 20.3.2009, 23:06 |
| Это слишком просто. Вообще, эти переменные/константы будут определяться в другой подключаемой библиотеке. |
| Автор: enof 20.3.2009, 23:12 |
| bobroff, как вариант объявлять функцию без параметров, в самой функции получать переданные параметры, если чего-то нехватает, то global $var; и юзать. У вас же класс, тогда без global. |
| Автор: bobroff 20.3.2009, 23:15 |
| Вроде подсказали более простое решение: PHP: <?php class a { const DEFAULT_HOST = 'localhost'; // ... public function db_connect($host = self::DEFAULT_HOST, // ...) { Буду пробовать. |
| Автор: enof 20.3.2009, 23:28 |
| bobroff, |
| Автор: IZ@TOP 21.3.2009, 00:48 | ||
Самый простой вариант, ИМХО
Если есть желание, пишите конфиги с возможностью перезаписи значений дефолтными в случае их отсутствия. |
| Автор: bobroff 21.3.2009, 12:29 | ||||||||||||
| В итоге пока получилось следующее: config.php:
db.module:
В целом работает, параметры по умолчанию устанавливает. Но опять же небольшой вопрос. Когда создаешь новый объект из этого класса:
Все ок.
Тоже все ок: выдвет ошибку подключения, т.к. "server" не существует. А когда хочу, например, выбрать другую базу, пропуская указание сервера (т.е. скрипт должен подставить сервер по-умолчанию):
Выдает ошибку: "Parse error: syntax error, unexpected ',', expecting ')' in..." В чем тут ошибка? Почему нельзя пропустить параметр? Когда пишешь вот так:
Все ок. |