- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经自动加载了一个类,该类具有正确的命名空间和 PSR-0。我把它放在app/lib/CI中,类和它的文件名是相同的“DB”。类文件本身在实际类之前包含一个配置文件:
require( 'config.php' );
class DB {
// ...
}
该类显然是自动加载的,因为当我调用静态方法 connect 时,它确实会从::connect() 内部显示一条错误消息。问题是,包含的 config.php 中的全局变量在 class::method 中不可用。
所以,需要明确的是,数组 $connection_settings 位于 config.php 内部,但即使使用时:
global $connection_settings;
$connection_settings 未在 connect 方法内设置。
有趣的是,即使该类是自动加载的,如果我从routes.php 文件顶部包含该类,一切都会正常工作。那么,为了让自动加载按照我认为的“正常”方式工作,我做错了什么?
最佳答案
这是 Composer 的问题而不是 Laravel。 Composer 尽一切努力在自动加载期间不污染全局范围(在 #1297 中简要讨论)。如果您想强制使用全局变量,那么您应该在配置文件以及使用它们的任何函数中将它们声明为全局变量。
Using global keyword outside a function is not an error. It can be used if the file is included from inside a function.
下面的代码适用于我(在 PHP 5.4.13 上使用 Laravel 4b4)。删除任一全局行都会破坏代码(以不同的方式)。
global $connection_settings;
$connection_settings = array(/* ... */);
require 'config.php';
class DB {
static function connect()
{
global $connection_settings;
// Do something with $connection_settings
}
}
关于拉拉维尔 4 : Why does my class autoload but global variables are not available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15676353/
我正在使用 git clone 部署我的 Laravel 项目并使用 git pull 进行更新 它工作正常,但每次部署时,我都必须从 config/app.php providers 数组和 ali
我是一名优秀的程序员,十分优秀!