2013-04-22 2 views
1

Например у меня есть файл config.php:PHP получить переменные в классе из другого файла

$host = 'localhost'; 
$db = 'logger'; 
$user = 'user'; 
$pwd = 'pass'; 

и файл mysqlClass.php

class mysql{ 

public function connect(){ 

//hot get get variables form confing.php there ? 
} 

} 

И я не знаю, жарко, чтобы получить переменные из confin.php в классе MySQL, Я не могу изменить файл config.php

+1

Проходят переменные через функцию, или называть их по всему миру. Google эту информацию. –

+0

передать их конструктору класса. – Ejaz

+0

Не используйте функции базы данных 'mysql_'; вместо этого используйте что-то вроде PDO. http://php.net/manual/en/book.pdo.php –

ответ

2

Только require_once() файл

public function connect() { 
    require_once 'config.php'; 
    // ...code... 
} 
+0

Также возможно, но включая файлы в функциях (кроме автозагрузчика), это хороший стиль? – bwoebi

1
include 'config.php'; 
include_once 'config.php'; 

или

require 'config.php'; 
require_once 'config.php'; 

Внутри mysqlClass.php

Разница между include и require является то, что require также будет производить фатальную E_COMPILE_ERROR ошибку уровня, остановка сценария, в то время, include производит только E_WARNING, который НЕ остановит сценарий. Разница между include_once или require_once и include или require заключается в том, что PHP проверяет, был ли файл уже включен, а если нет, он будет включать его. Если он есть, он будет не загрузить его снова.

1

Используйте параметры функции:

class mysql{ 
    public function connect($host, $db, $user, $pass){ 
     // do something with the variables 
    } 
} 

Когда инстанцировании mysql теперь используют:

require 'config.php'; 
$mysql = new mysql($host, $db, $user, $pass); 
+0

Это лучшее решение, соответствующее объектно-ориентированному коду. Не используйте require_once в своем классе Mysql. –

+0

Это именно то, что я прокомментировал @bsdnoobz – bwoebi

Смежные вопросы