Как я могу правильно запросить файл и использовать его переменные? - PullRequest
1 голос
/ 29 июля 2011

Я пишу простой PHP-скрипт, который использует БД для экспорта некоторых продуктов.Мой код начинается как

$host = "localhost";
$user = "";
$pass = "";
$database = "";

, позволяя пользователю добавить эту информацию.Тем не менее, есть ли способ использовать файл configuration.php, который был сохранен в том же каталоге

Я сделал это, но у меня ничего не получилось

require('configuration.php');
echo $user;

Этофайл configuration.php

<?php
class JConfig {
var $dbtype = 'mysql';
var $host = 'localhost';
var $user = 'user';
var $password = 'pass';
var $db = 'db';
}
?>

Ответы [ 4 ]

2 голосов
/ 29 июля 2011

Если вы используете класс для конфигурации (почему?), То вы должны его инициализировать. или используйте статический класс vars.

require('configuration.php');

$config = new JConfig;
echo $config->user;

Вы также можете использовать только определяет, например,

define('DB_USER', 'yourusername');
define('DB_PASS', 'yourpassword');

после включения / запроса, вы просто делаете:

echo DB_USER;

Ссылка: http://php.net/manual/en/language.oop5.static.php


РЕДАКТИРОВАТЬ: после вашего редактирования я думаю, что вы имеете в виду что-то другое.

вам потребуется 2 файла конфигурации. config_default.php config.php

пользователи пишут свои конфигурации в config.php, а ваши - в config_default.php

сначала вам нужно будет включить config_default.php, а затем config.php. Обратите внимание, что это работает только с переменными. если вы используете классы, вам придется написать код для инициализации классов с правильными переменными конфигурации.

1 голос
/ 29 июля 2011
 class JConfig {
    public static $dbtype = 'mysql';
    public static $host = 'localhost';
    public static $user = 'user';
    public static $password = 'pass';
    public static $db = 'db';
    }

и Access direct в вашем файле, если вы включили этот файл

JConfig::$user // return 'user'

Reference

0 голосов
/ 29 июля 2011

Вы не получите результат от включения / запроса вашего файла configuriation.php в том виде, в каком он есть, но у вас была правильная идея.

Если вы удалите оболочку класса JConfig вокруг этих переменных, вы можете использовать их, как если бы они были локальными переменными, как только вы включите / потребуете файл.

configuration.php

<?php
var $dbtype = 'mysql';
var $host = 'localhost';
var $user = 'user';
var $password = 'pass';
var $db = 'db';
?>
0 голосов
/ 29 июля 2011
require('configuration.php'); 
$config = new JConfig;
echo $config->user;
...