Вынос констант БД вне класса php

Статус
В этой теме нельзя размещать новые ответы.

guru85

Постоялец
Регистрация
24 Мар 2010
Сообщения
100
Реакции
4
Здравствуйте, помогите пожалуйста, не могу сообразить. есть готовый класс на php в самом начале стоят константы, как бы мне их вынести из этого файла и положить в другой, config.php
Код:
class CPayment {
   
    const db_host    = 'localhost';  /** Имя сервера MySQL */
    const db_user = 'user'; /** MySQL database username */
    const db_pass    = 'пасс'; /** MySQL пароль  базы данных*/
    const db_name    = 'имя';  /** Имя базы данных*/
смысл в том чтобы не лезть в класс для установки доступов к бд, а делать это в другом файле.
 
Здравствуйте, помогите пожалуйста, не могу сообразить. есть готовый класс на php в самом начале стоят константы, как бы мне их вынести из этого файла и положить в другой, config.php
Код:
class CPayment {

    const db_host    = 'localhost';  /** Имя сервера MySQL */
    const db_user = 'user'; /** MySQL database username */
    const db_pass    = 'пасс'; /** MySQL пароль  базы данных*/
    const db_name    = 'имя';  /** Имя базы данных*/
смысл в том чтобы не лезть в класс для установки доступов к бд, а делать это в другом файле.

1. Возьми стандартный конфиг с подключением к бд
2. Убери из класса данные бд
3. сделай в файле класса или куда класс подлючаеться вверху инклюд конфига!

Как то так видимо!
 
Последнее редактирование:
так ведь функции обращается к этим константам, нет возможности переписать весь класс тем более что функция подключения бд как раз в классе и там много других констант которые так же надо вынести из класса.
 
Код:
class YourConfig {
 
    var $db_host    = 'localhost';  /** Имя сервера MySQL */
    var $db_user = 'user'; /** MySQL database username */
    var $db_pass    = 'пасс'; /** MySQL пароль  базы данных*/
    var $db_name    = 'имя';  /** Имя базы данных*/
}
class CPayment {
    $yourconfig = new YourConfig();
    const db_host = $yourconfig->db_host;
    const db_user = $yourconfig->db_user;
    const db_pass = $yourconfig->db_pass;
    const db_name = $yourconfig->db_name;
так не вариант?

а константы вам обязательно использовать? пусть будут переменные да и все. все равно база подключается только один раз при инициализации скриптов
 
Последнее редактирование модератором:
syntax error, unexpected '$yourconfig' я так понимаю что константу нельзя переменной объявить, а принцип как раз такой примерно и нужен

в классе везде используется вот такие строки, если уберу константы придется весь класс переписывать, думал можно как-то решить без исправления, да и не только подключение к бд в классе используют констнаты там еще есть
Код:
mysql_connect(self::db_host, self::db_user, self::db_pass);
 
Последнее редактирование модератором:
Есть же механизм наследования
PHP:
class Config {

  const db_host  = 'localhost';  /** Имя сервера MySQL */
  const db_user = 'user'; /** MySQL database username */
  const db_pass  = 'пасс'; /** MySQL пароль  базы данных*/
  const db_name  = 'имя';  /** Имя базы данных*/
}

class CPayment extends Config {
  
}
 
а если от этого класса еще идет наследование в клиентские в пользовательские классы? тогда это станет небезопасно
как вариант, вынести
Код:
    const db_host    = 'localhost';  /** Имя сервера MySQL */
    const db_user = 'user'; /** MySQL database username */
    const db_pass    = 'пасс'; /** MySQL пароль  базы данных*/
    const db_name    = 'имя';  /** Имя базы данных*/
в отдельный файл и заинклудить его в классе, так:
Код:
class CPayment {

function db_connect_my(){
require_once('your_config.php');
...
...
}
}
 
Есть же механизм наследования
PHP:
class Config {

  const db_host  = 'localhost';  /** Имя сервера MySQL */
  const db_user = 'user'; /** MySQL database username */
  const db_pass  = 'пасс'; /** MySQL пароль  базы данных*/
  const db_name  = 'имя';  /** Имя базы данных*/
}

class CPayment extends Config {

}
Ваш вариант подходит

Все сработало, Вы мне очень помогли.
 
Последнее редактирование:
Ваш вариант подходит, только не могу понять как правильно проинклюдить файл конфиг с классом, получается надо его в каждую директорию добавить от куда к классу обращение идет чтобы он сработал, делаю так, сделал файл с классом config а в файл с классом class CPayment extends Config в начало ставлю require_once 'config.php';

почитайте про относительные пути...
пример CPayment лежит в папке
/classes/paymant/CPayment.class.php

а конфиг в папке
/config/db.php

тогда в CPayment.class.php мы инклюлим через путь '../../config/db.php'

Если классов много и подключать их лениво освойте автолоад - Для просмотра ссылки Войди или Зарегистрируйся ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху