我正在尝试向服务提供商注册事件,但我不断收到反射类错误.我搜索过并找不到解决方案,也许这是核心问题.
// AppServiceProvider.php
<?php namespace App;
use Illuminate\Support\ServiceProvider;
use App\Events\UserEventHandler;
class AppServiceProvider extends ServiceProvider {
public function register() {
// Events
$this->app->events->subscribe(new UserEventHandler);
}
}
// UserEventHandler.php
<?php namespace App\Events;
class UserEventHandler {
/**
* Handle user login events.
*/
public function onUserLogin($event)
{
echo 'subscriber logged in'; exit;
}
/**
* Register the listeners for the subscriber.
*
* @param Illuminate\Events\Dispatcher $events
* @return array
*/
public function subscribe($events)
{
$events->listen('auth.login', 'UserEventHandler@onUserLogin');
}
}
Run Code Online (Sandbox Code Playgroud)
$this->app->events->subscribe(new UserEventHandler);
正好点火,因为我可以到达subscribe方法,但是 $events->listen('auth.login', 'UserEventHandler@onUserLogin'); …
我到处寻找,我能找到的都是过时的或来自几个不同来源的零碎碎片,但没有一个完整的步骤来说明如何将 Django 部署到生产环境。
我想看到的是使用 git、本地和生产 settings.py、.gitignore 专门为 Django 部署 Django 的推荐方法。
我将如何实现设置以适应这两种环境以及应将哪些内容添加到 .gitignore 文件中,以便仅将必要的文件发送到 git 存储库?
请注意,我想了解使用本地和生产设置的最佳实践和最新方法。
部署 Django 应用程序时会出现此类问题。
感谢andreas澄清这一点,现在我完全同意没有部署 Django 的标准方法。我进行了长时间的研究,发现了部署 Django 设置最常用的方法。我将与所有有同样疑问的人分享我的发现。
接听
这些设置更好地包含在设置模块中,而不是单个settings.py
文件中。
这是设置模块非常方便的地方,因为您可以简单地拥有独立于环境的设置,并且它们可以使用 git 或任何其他版本控制进行维护。
敏感信息,例如数据库、电子邮件、密钥和任何与身份验证相关的信息以及您将如何秘密提供这些私人信息,我建议使用andreas建议。
您可以在 at 创建一个单独的文件/etc/app_settings
并使其受到严格限制,或者只是使用系统内的环境变量。
对于 .gitignore 部分,我找到了一个很棒的 repo,您可以在https://github.com/github/gitignore 上获得各种示例。
我最终使用了:
# OSX Finder turds
.DS_Store
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Distribution / …
Run Code Online (Sandbox Code Playgroud)