laravel吐槽系列之一
吐槽点:laravel的vendor引用的组件过多
➜ laravel composer create-project laravel/laravel test --prefer-dist
Installing laravel/laravel (v4.2.0)
- Installing laravel/laravel (v4.2.0)
Downloading: % Created project in test
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing symfony/translation (v2.5.4)
Downloading: % - Installing psr/log (1.0.)
Downloading: % - Installing symfony/security-core (v2.5.4)
Downloading: % - Installing symfony/debug (v2.5.4)
Downloading: % - Installing symfony/http-foundation (v2.5.4)
Downloading: % - Installing symfony/event-dispatcher (v2.5.4)
Downloading: % - Installing symfony/http-kernel (v2.5.4)
Downloading: % - Installing symfony/routing (v2.5.4)
Downloading: % - Installing symfony/process (v2.5.4)
Downloading: % - Installing symfony/finder (v2.5.4)
Downloading: % - Installing symfony/console (v2.5.4)
Downloading: % - Installing symfony/filesystem (v2.5.4)
Downloading: % - Installing symfony/dom-crawler (v2.5.4)
Downloading: % - Installing symfony/css-selector (v2.5.4)
Downloading: % - Installing symfony/browser-kit (v2.5.4)
Downloading: % - Installing swiftmailer/swiftmailer (v5.2.2)
Downloading: % - Installing stack/builder (v1.0.2)
Downloading: % - Installing predis/predis (v0.8.7)
Downloading: % - Installing phpseclib/phpseclib (0.3.)
Downloading: % - Installing patchwork/utf8 (v1.1.25)
Downloading: % - Installing nesbot/carbon (1.13.)
Downloading: % - Installing monolog/monolog (1.10.)
Downloading: % - Installing nikic/php-parser (v0.9.5)
Downloading: % - Installing jeremeamia/superclosure (1.0.)
Downloading: % - Installing ircmaxell/password-compat (1.0.)
Downloading: % - Installing d11wtq/boris (v1.0.8)
Downloading: % - Installing classpreloader/classpreloader (1.0.)
Downloading: % - Installing filp/whoops (1.1.)
Downloading: % - Installing laravel/framework (v4.2.9)
Downloading: % symfony/translation suggests installing symfony/config ()
symfony/translation suggests installing symfony/yaml ()
symfony/security-core suggests installing symfony/validator (For using the user password constraint)
symfony/security-core suggests installing symfony/expression-language (For using the expression voter)
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/http-kernel suggests installing symfony/class-loader ()
symfony/http-kernel suggests installing symfony/config ()
symfony/http-kernel suggests installing symfony/dependency-injection ()
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/yaml (For using the YAML loader)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
predis/predis suggests installing ext-phpiredis (Allows faster serialization and deserialization of the Redis protocol)
phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a wide variety of cryptographic operations.)
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)
phpseclib/phpseclib suggests installing pear-pear/PHP_Compat (Install PHP_Compat to get phpseclib working on PHP < 4.3..)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing raven/raven (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
laravel/framework suggests installing doctrine/dbal (Allow renaming columns and dropping SQLite columns.)
Writing lock file
Generating autoload files
Mcrypt PHP extension required.
Script php artisan clear-compiled handling the post-install-cmd event returned with an error
解决办法:忍
吐槽点:laravel的路由可以写function
解决办法:团队自行做一些规定来限制路由的功能。
吐槽点:laravel没有默认路由
Route::get('login', ['as' => 'login', 'uses' => 'UserController@login']);
Route::controller('series', 'SeriesController’);
解决办法:多使用Route::controller
吐槽点:日志记录信息太多了

解决方法:自定义日志编辑类
<?php
namespace Yejiafneng\Helpers; use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Illuminate\Log\Writer; class BLogger
{
// 所有的LOG都要求在这里注册
const LOG_ERROR = 'error';
const LOG_SHOP = 'shop';
const LOG_QUERY = 'query';
const LOG_LOGIN = 'login'; private static $loggers = array(); // 获取一个实例
public static function getLogger($type = self::LOG_ERROR, $day = )
{
if (empty(self::$loggers[$type])) {
self::$loggers[$type] = new Writer(new Logger($type));
}
$log = self::$loggers[$type];
$log->useDailyFiles(storage_path().'/logs/'. $type .'.log', $day);
return $log;
}
}
然后在app/start/global.php中修改错误日志回调函数为:
// 错误日志信息
App::error(function(Exception $exception, $code)
{
// 如果没有路径就直接跳转到登录页面
if ($exception instanceof NotFoundHttpException) {
return Redirect::route('login');
} Log::error($exception); $err = [
'message' => $exception->getMessage(),
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'code' => $exception->getCode(),
'url' => Request::url(),
'input' => Input::all(),
];
BLogger::getLogger(BLogger::LOG_ERROR)->error($err);
});

吐槽点:ORM的where太弱
Student::where('female', )
->where('teacher_id', )
->where('class_id', )
->get();
解决办法:在基类中扩展一个multiwhere
// 多where
public function scopeMultiwhere($query, $arr)
{
if (!is_array($arr)) {
return $query;
} foreach ($arr as $key => $value) {
$query = $query->where($key, $value);
}
return $query;
}
Student::multiwhere([‘female’=>, ’teacher_id’ => , ‘class_id’ => ])->get();
一下子腰也不酸了,头也不疼了。。。
后记
laravel还是能让一个phper学习到很多的,我努力着爱之深责之切的原则,后续使用laravel中使用不爽的地方再继续吐槽和讨论。
laravel吐槽系列之一的更多相关文章
- Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】
Laravel 5 系列入门教程(一)[最适合中国人的 Laravel 教程] 分享⋅ johnlui⋅ 于 2年前 ⋅ 最后回复由 skys215于 11个月前 ⋅ 17543 阅读 原文发表在 ...
- Laravel 4 系列入门教程(一)
默认条件 本文默认你已经有配置完善的PHP+MySQL运行环境,懂得PHP网站运行的基础知识.跟随本教程走完一遍,你将会得到一个基础的包含登录的简单blog系统,并将学会如何使用一些强大的Larave ...
- Laravel 5系列教程五:MVC的基本流程
免费视频教程地址https://laravist.com/series/laravel-5-basic 期间受到很多私事影响,终于还是要好好写写laravel的教程了. 上一篇我们说了数据库和Eloq ...
- Laravel 5系列教程六:表单 Forms
免费视频教程地址https://laravist.com/series/laravel-5-basic 在开始之前,我们把界面先美化一点点先: 首先到https://github.com/JellyB ...
- Laravel 5系列教程四:数据库和Eloquent
免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇写了一些Laravel Blade的基本用法和给视图传递变量的几种方式, 这一节我们来说说 ...
- Laravel 5系列教程二:路由,视图,控制器工作流程
免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel ...
- Laravel 5 系列教程三:视图变量传递和Blade
免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇我们简单地说了Router,Views和Controllers的工作流程,这一次我就按照上 ...
- laravel进阶系列--通过事件和事件监听实现服务解耦
简介 Laravel 事件提供了简单的观察着模式实现,允许你订阅和监听应用中的事件.事件类通常存放在 app/Events 目录. 监听器存放在 app/Listeners. 如果你在应用中没有看到这 ...
- techiediaries网站的Laravel 6系列教程
Laravel 6 Tutorial & New Features - Build a CRM [PART 1] Laravel 6 REST API CRUD Tutorial - Buil ...
随机推荐
- Cron表达式备忘
Cron表达式(在Quartz.net里面会用到) 由7段构成:秒 分 时 日 月 星期 年(可选)"-" :表示范围 MON-WED表示星期一到星期三"," ...
- 对非线程安全类List<T>的一些总结
一个项目的一个功能点,需要从接口接受返回数据,并对返回的数据进行一些业务处理,处理完成之后,添加到一个List<T>中,然后在View中循环这个List<T>,展示所有的数据. ...
- Amazon RDS MySQL数据库还原时 log_bin_trust_function_creators 错误解决办法
使用了Amazon AWS EC2免费云空间,数据库实例采用Amazon RDS.原来在Windows Server上有一个存在大量数据的MySQL数据库.现在需要在Amazon RDS上还原这个My ...
- 分享一个漂亮WPF界面框架创作过程及其源码
本文会作为一个系列,分为以下部分来介绍: (1)见识一下这个界面框架: (2)界面框架如何进行开发: (3)辅助开发支持:Demo.模板.VsPackage制作. 框架源码如下所示. 本文介绍第(1) ...
- Windows Phone App的dump文件实例分析- System.ExecutionEngineException
前言 在开始这篇文章之前我们先来讲讲如何从高度优化的Release版的Dump中找到正确的异常上下文地址,并手动恢复异常发生的第一现场. 1. 什么是异常上下文 简单来说,在windows体系的操作系 ...
- 在英文版操作系统中安装的MS SQL server,中文字段无法匹配
在英文版的操作系统中安装的MS SQL server,会出现中文字段无法被匹配到.其原因在于英文环境下安装的MS SQL server的排序规则不包括中文. 所以解决办法就是更改MS SQL serv ...
- RabbitMQ(六)远程连接
RabbitMQ(六)远程连接 默认情况下,rabbitmq使用`guest`来连接本地(localhost)的server,当需要远程连接时,就会失效. "guest" user ...
- 可拖动的DIV
在做WEB UI设计的时候,拖动某个HTML元素已经成为一种不能忽视的用户界面模式,比较典型的应用例子就是Dialog,一个元素是怎么实现拖动的呢?其实原理非常简单,要想实现首先得了解几个基本知识. ...
- 为 Exchange 服务器编写自定义的反垃圾插件
Exchange 2010 的 Edge Transport 包含了一些 Anti-spam 的 Feature,如图: 都开启了,但是呢,还是会有漏网之鱼,而且把这些邮件自己列为 Junk 也起不了 ...
- Ubuntu 12.04下GAMIT10.40安装说明
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/164.html?1456481297 Ubuntu 12.04下GAMIT10.40安装步 ...