我是PHP的新手,并尝试以声音为基础启动PHP项目。 我看过很多网站的源代码,并意识到每个人都有不同的看法。
最初我想在配置类中保存我的数据库设置和本地设置,如Dataformate,Currency formate等 在不使用包含的情况下,每个应用程序都可以访问。
我需要一个好的控制器类,我不想使用任何框架!
非常感谢您的帮助。
答案 0 :(得分:0)
如果我错了,有人可以纠正我,但我不相信你可以在不使用include的情况下设置PHP变量,即使你可以,也不是一个好主意。如果可能的话,以后维护代码的人会非常困惑。
可以做什么,它会创建一个__autoload
函数(请参阅:http://php.net/manual/en/language.oop5.autoload.php),在您需要时使用您的变量加载一个类。然而,这比仅仅包括文件更加昂贵。
如何创建自动加载器
的index.php:
<?php
include("autoloader.inc.php");
$vars = new settings(); //this procs the __audoload() function
autoloader.inc.php:
<?php
function __autoload($class) {
include $class . '.php';
}
的settings.php:
<?php
//settings functions
date_default_timezone_set('America/Los_Angeles');
//... more stuff
//variable container class
class settings {
public static $dbuser = "billybob";
//... more stuff
}
自动装带器的优点在于,您并不总是需要这些信息,您可以避免在不需要时加载设置文件。或者根据需要加载其他类。
答案 1 :(得分:0)
如果你想在你的应用程序中每次都包含一个文件&amp;假设每个请求都由index.php处理,你可以这样做,
$lib_paths = array();
$lib_paths[] = "c:/web/htdocs/appname/lib"; // you can more paths in this array
$inc_path = implode(PATH_SEPARATOR, $lib_paths);
set_include_path($inc_path);
假设lib有你的配置类/文件。
如果您正在寻找控制器类&amp;正如你所说,你是新人,我建议你阅读
Pro PHP:模式,框架,测试等 Kevin McArthur
它会让您了解如何创建控制器和放大器。 MVC的其他组件
希望这会有所帮助
答案 2 :(得分:0)
将所有配置变量存储到ini或yaml文件(Web服务器的不可访问路径)。我更喜欢Yaml文件。因为它比ini更舒服。
对于读取ini文件,可以在php中使用parse_ini_file()函数。对于yaml使用symfony YAML组件。
创建一个基本的配置类来读取它。
答案 3 :(得分:0)
如果运行apache,您可以使用SetEnv设置一个可在任何php脚本中使用的变量,方法是使用getenv()来访问它。
所以在httpd.conf中你可能有
SetEnv CurrencyFormat SomeFormat
你可以在你的代码中访问:
$currencyFormat = getenv('CurrencyFormat');
但是,我不确定你为什么要避免包含?将您的设置本地化到您的应用程序当然更为标准,这意味着包括某些内容,无论您是否真正包含,或者读取某种类型的config.ini。