Php 在哪里存储全局数据?

Php 在哪里存储全局数据?,php,laravel,laravel-4,Php,Laravel,Laravel 4,我正在用Laravel4.1编写这个小型博客平台,用于学习。我的第一个障碍是,我不知道全局数据(即动态博客设置、插件和主题数组)应该放在哪里,这样我就可以从任何地方访问它们(类似于WordPress中$wpdb的工作方式-我们只需要global$wpdb;来访问它) 当然$GLOBALS是有效的,但我们知道它是邪恶的,应该避免。另外,我希望一切尽可能的轻松 已尝试: App::bind('settings', []); // error App::instance('settings', [])

我正在用Laravel4.1编写这个小型博客平台,用于学习。我的第一个障碍是,我不知道全局数据(即动态博客设置、插件和主题数组)应该放在哪里,这样我就可以从任何地方访问它们(类似于WordPress中$wpdb的工作方式-我们只需要
global$wpdb;
来访问它)

当然$GLOBALS是有效的,但我们知道它是邪恶的,应该避免。另外,我希望一切尽可能的轻松

已尝试:

App::bind('settings', []); // error
App::instance('settings', []); // how to populate and retrieve it back?

有什么想法吗?提前感谢。

如果这不是您需要在课间保留的内容,您可以使用:

Config::set('myglobals.name', 'An Phan');
然后

var_dump( Config::get('myglobals.name') );
但是你也必须想一想,为什么你首先需要全局的。看看这个:

编辑

这不是一个解决方法,这是Laravel提供的开箱即用的东西,你可以自己使用。通常配置的目的是让应用程序使用配置文件,但有时您只需要在请求期间更改这些值,这就是为什么Laravel还提供了一个
set()
方法

不幸的是,WP有一个旧的代码库,如果你试图用WP的方式做事,你就走错了路

什么是Laravel方法取决于您试图通过项目实现什么,因此您必须多讲一点

一开始的心态是:“我不需要全局的”,当你到了需要全局的时候,你会问自己“如果不使用全局的话,我怎么做?”

通常,如果要存储设置,则只需要全局值。如果在请求期间必须使用它来设置状态,则需要使用对象。可以在Laravel中使用全局对象,也可以使用单例对象(在整个应用程序中只有一个实例的对象),还可以创建属性对象:

class SidebarProperties {

    private $width;

    public function __construct($width)
    {
       $this->width = $width
    }

    public getWidth()
    {
       return $this->width;
    }

}

所以你有无数种方法不使用全局变量,你只需要考虑一下你的项目,然后选择一个在那一刻是最好的。

好吧,如果你没有写任何“生活”在应用程序上下文之外的东西,那么在Laravel上下文中全局变量就意味着相对于应用程序。 有两种方法可以使数据对应用程序可用。但首先,你必须决定你需要什么样的“全球人”

第一条也是最重要的规则是,除了特定于应用程序的文件夹结构之外,您所做的任何更改都必须告知composer

其次,在不做任何更改的情况下,Laravel为任何“普通”web应用程序的最重要部分提供了默认位置

应用程序文件夹结构是非常自描述性的,但简而言之:

Configurations belongs to app/config
Models to app/models
Views to app/views
Controllers to app/controllers
Database to app/database
Routes to app/routes.php
如果你遵循这个基本结构,你就可以创造出令人惊叹的网络应用。这些文件夹和文件已命名,其中的类已自动解析。在您的示例中,您试图将某些内容绑定到应用程序,这在您的示例中是多余的。当您希望向现有结构添加一些新类和功能时,可以使用到容器的绑定

简言之:

在routes.php中创建第一条路由,如下所示:

Route::get("GET",function(){
    return "my first route";
})
从这一点出发,遵循基本的MVC流程,这与大多数框架没有什么不同。拉威尔在和你说话,只要张开你的耳朵:)
如果你堆叠,请在这里询问,有人会帮助你。

谢谢@Antonio<代码>配置确实有效,但这是最好的方法,还是仅仅是一种解决方法?据我所知,很多WP变量都是全局变量。如果应该避免它们,那么在拉雷维尔,有什么样的模式可以达到同样的效果呢?@AnPhan你需要从不同的角度来思考,而不是如何在任何地方应用同样的东西。@AnPhan,只是增加了一些东西供您思考。
$GLOBALS
被认为是邪恶的,因为一些程序员会在其中存储非全局数据(除非我们讨论的是系统测试,在这种情况下,所有全局和静态函数/变量都被认为是邪恶的)。如果您使用$GLOBALS来存储全局数据,那么就可以了。