0

0

看了laravel的php框架怎么感觉很不靠谱?

php中文网

php中文网

发布时间:2016-06-06 16:41:55

|

1524人浏览过

|

来源于php中文网

原创

听说laravel挺火,就用看了一下,没有深入去看,算是只看完快速入门,看了以后有点失去兴趣了,特来知乎请教一下。如果这东西都是用composer的方式调入各种第三方的包来完成任务,那么灵活性是不是太低了一点,虽然没有重复造轮子,但是最后大家弄出来都是一样的轮子,还有安全性好保证么,听说效率也不高啊。如果不使用第三方包的情况下,能加快多少开发速度呢?会不会反倒不如其他的框架?

追加:有些回答觉得我对laravel不够深入所以评价不客观,ok,我想这也是有可能的,虽然第一感官不好了,但为了不武断作出结论,我决定继续深入下去,如果不好,到时候再回来反驳你们,哼哼,=P。

Sora
Sora

Sora是OpenAI发布的一种文生视频AI大模型,可以根据文本指令创建现实和富有想象力的场景。

下载

回复内容:

子之武城,闻弦歌之声。夫子莞尔而笑,曰:「割鸡焉用牛刀」。 --- 《论语》
我们学习一个框架,不是因为他简单易学,而是因为他高效强大。

Laravel 框架的出现,将 PHP 的后端开发带入了一个新的高度,其中的 composer 和 PHP-FIG 等,标志着 PHP 已经不再仅仅是“前端语言”、“展示层语言”了。

PHP 的特点就是易于入门,而且 PHP 是一个语法大杂碎,汇集了 C Perl 等等,当年我学了半天时间,就可以拿来做网站了。

对于框架,大部分 PHPer 会首选 ThinkPHP 或者 CI。因为这几个框架的门槛和 PHP 的门槛很对口。如果像 Java 那样,学习半年才能做开发,大部分的 PHPer 是接受不了的。如果一个框架(比如 SSH)需要学习半个月才能上手,PHPer 们也接受不了,于是 TP 和 CI 框架大行其道。(PHP 界和 SSH 框架媲美的 ZF 也被 PHPer 鄙视为大而无用,处处透漏这 Java 的臭毛病)

随着 Laravel 的出现,我毫不犹豫的从 CI 转入了 Laravel 阵营。

如果你仅仅是为客户写一个网站,那么即使原生的 PHP 也可以应付,如果想再提高点儿效率,可以选用 TP 或者 CI。

但是,如果你是为公司或者自己开发一个项目,这个项目准备运营五年以上,那么 CI 的弊端就凸现了。五年间,CI 估计都已经升级了 N 版了,PHP 也升级了 N 版了。你升级吗?

项目是在本地开发调试完成,当上线后遇到问题了,我们如何查找,如何跟踪呢?最通常的办法就是 log。现在几乎每个框架都有 log 功能,但是 Laravel 的又一强大之处就是他的 log 遵循 PHP-FIG,也就是以后你可以随意更换 log 的实现类以提高性能。这就好比我们的 PC,它上面都有 USB 接口,这样我们就可以任意更换 USB 设备,比如 USB 鼠标,USB 键盘,USB 硬盘等。而 Laravel 依据 PHP-FIG 标准提供日志接口,我们只需要更换实现。

那么现在问题来了,挖掘机……,现在很多 PC 支持了 USB 3.0,这时,我们买硬盘的时候就可以买支持 3.0 的,以达到更高的速度。Laravel 使用 composer 管理包依赖
如果这东西都是用composer的方式调入各种第三方的包来完成任务,那么灵活性是不是太低了一点
使用 composer 不是为了调入,而是为了管理,管理包,以及各种包的版本。这样就解决了各种包的兼容问题。而在 composer 出现之前,PHP 依然没有有效的方法解决这些问题。如果我们需要一个 Excel 的导入导出功能时,就去搜索 PHP 的 Excel 库,大部分情况是去官网下载最新的稳定版本。如果出现问题了,就去谷歌或者百度搜索,“我去~原来是版本问题,这个库使用了匿名函数,PHP 5.3 不支持,哎,只能下载以前的版本了~~”。

Composer 将工程化的思想带入了 PHP

如果不使用第三方包的情况下,能加快多少开发速度呢?

如果仅仅是开发速度,Laravel 无疑是低效的,笨重的。这显然和“世界上最好的语言”不相搭配。但是如果你开发过大中型项目就会发现,编码(Coding)其实在整个项目阶段,连三分之一都占不到。再退一万步讲,开发周期也许是3个月,但是整个项目的生命周期确实3年啊。

如果你的行程是10公里,那么无疑开车是最快的,如果坐飞机的,估计还没有来得及起飞呢。如果行程是100米呢,走路无疑是最快的。

再说说另一个被 PHPer 忽略的问题,那就是单元测试。同样是 MVC 框架,但是 PHPer 很多是为了 MVC 而 MVC,为了设计模式而设计模式。知其然而不知其所以然。如果问一个 PHPer 为什么使用 MVC,为什么使用模式,估计大部分都答不出来。

今天下午还在 sf 看到一个类似的提问,大意是 ThinkPHP 的模型有什么用,这些代码完全可以写在控制器里面,这样速度还快。诚然,大部分 PHPer 不知道为什么要分层架构,即使使用了框架。

谈到分层,任何一个 java 框架都可以甩 PHP 几条街。(PS:从我的名字可以看出,我是java粉,但我也坚信 PHP 是世界上最好的语言)

现在有一个控制器,处理转账。在这个流程中,需要表单验证、控制器处理业务逻辑、持久化(存储到数据库)、渲染视图,还有一些安全处理、日志功能等。

在传统的 PHP 开发过程中,都是:编码,运行,调试改错,直到运行成功,然后打开浏览器,输入数据,点击执行,看结果,如果正确,再次输入数据,如果错误,修改,调试,再打开浏览器,重复,重复,知道自己满意为止。

我们也可以使用 PHPUnit,我们把转账功能写到一个(几个)单独的类里面,测试转账的核心功能。但是我们要想测试控制器,模型,则还需要一些黑魔法。如果在 SSH 中,就 So Easy 了,任何一个模块都可以单独拿出来进行单元测试。因为任何一个模块,都可以脱离 SSH 框架而单独运行。

在 SSH 中,我们可以把控制器拿出来,放到 JUnit 中测试控制器的功能。我们也可以把路由器模块拿出来,测试 URL 路由是否正确。等等。而在 PHP 的 CI 或者 TP 框架中,控制器不可能单独拿出来进行测试。

而 Laravel 对于 PHP 的工程化的另一个贡献就是——可测试性。 额。。。额。。。额。。。
PHP好不容易有了composer,你居然说这货没用?框架的更多目的是为了项目的可持续性,而不是能有多快的去开发一个项目。。

在这个什么都要迭代更新的年代,没有可持续的架构,就是废的。

你的系统如果有上百个功能,每个功能之间还有一定的依赖,除了包管理,还有什么好的方式,让几百个人的团队来有序开发? 强烈推荐学习laravel,你会发现在学习过程中,你会学习到框架之外的更多知识
1.如何翻墙,因为composer的安装和使用在墙内的速度是令人发指的
2.如何翻译,因为laravel的文档大部分是英文的,比如laravel5.1是6月发布的,直到今天10月19日,完全汉化的文档还是没有。
3.如何撕逼,你要对面用TP的人的不理解,用Yaf的人的鄙视,用Yii的人的试探的目光
4.如何运维,项目上线后,面对性能低下的问题你需要redis memcache opcache php7 hhvm 等等等优化性能的方案

以上! 首先,我个人挺喜欢laravel的。但是,我觉得没必要神话 laravel。
慢慢更……嗯。
/**********************************************************************************/
composer
只是为了方便你不用重复造轮子,其本身其实和laravel 一点儿关系也没有。
laravel只是可以用 composer 而已。 没有 laravel 你也可以用 composer ,
比如 CI3.0就支持 composer , 甚至你不用框架 也可以用 composer 。
composer的特性 和 laravel的特性 没关系……

composer 和 laravel 并不会 妨碍 你的项目代码的 自由度。

难道,当核心业务、核心数据相关的组件出现BUG的时候,
你还非要等 composer 更新版本以后 才能修正BUG吗?
当然不是的……
难道 laravel里,你就不能写 include 来引入文件, new一个对象了吗?
当然也不是的……

框架的存在,并没有缩小你写代码的自由度。
而只是提供给你了一个规范:
按照这个规范写,就可以享受这个规范带来的好处,
而自然也必然的会受到规范的约束,承受规范的坏处。

/**********************************************************************************/
重复造轮子这个事情,并不是完全无意义的
——哪怕是在工作项目中。

很多时候,可以找到的轮子是不合用的,
这种情况下就必然的需要改造轮子,乃至重做轮子。
这是很正常的事情,没必要惧怕重复造轮子。

当然、一定要评估使用旧轮子、改造旧轮子、重做新轮子之间的利弊,
权衡利弊之后再做出决定。
/************************************************************************************/
像 @justjavac 说的 LARAVEL的单元测试概念,确实是很好的。
这个确实是LARAVEL非常吸引人的地方!!!
不过如果说因为laravel支持 PHP-FIG 或者 JUnit ,我们就要支持它。
确实还是要针对不同的项目来看的……
选择自己的项目合适的框架,比起死忠一个框架 更有意义。

至于大项目……
现在存在多少 持续5年以上,单一系统维护人员超过100人的PHP项目 ?
我想并不是很多吧?
我接触到的单一系统很大的项目非常少见,
更多的还是N个小型的子系统共存的项目。
而这样的项目 如果刨除单元测试等优势……
LARAVEL有多少优势吗?感觉并不是太明显……
[当然,也可能是我没有接触过足够多的“大中型项目”的原因^_^]
/*****************************************************************************************/
LARAVEL 和 CI 给我的感觉:


CI3.0 像一个工具箱。我可以很方便的从中找出需要的工具,进行使用。通过工具箱里的工具,我也可以加工出很多方便的小工具来用。

LARAVEL 像一个车床。车床可以制造的工具和制造工具的速度,并非是工具箱可以比拟的。但是想要车床制造出工具箱里的工具来,需要下的力气也不是工具箱可以比拟的。 感觉你的需求和能力与Laravel提供的价值并不在一个位面上 Laravel的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD和BDD,作为一个框架,它为你准备好了一切~~composer简直就是个php的未来,没有composer,PHP肯定要走向没落~~
对于新手来说,上手度不是很高,特别是新推出的Laravel 5, 但是学习价值非常高~~你想知道php行业里面的最新编程思维,学Laravel吧LaraBase——全栈工程师之家 其实很多事情并不复杂,怕的是复杂的理论内容。很多东西一旦想通也就那么回事儿。很多人觉得 laravel 这不好那不好、这里难哪里难,我只能说,laravel 的确不是一流和优秀的框架。laravel最大的特点和优秀之处就是集合了php比较新的特性,以及各种各样的设计模式,Ioc容器,依赖注入,等等。因此laravel是一个适合学习的框架,他和其他的框架思想有着极大的不同,这也要求你非常熟练php,基础扎实。如果你觉得laravel很困难 那么原因只有一个 你php基础不够好。

另外,善于利用命名空间和面向对象的诸多特性,去追寻一些东西,你会发现,原来这一切这么容易。 任何事物存在都有其存在的理由,不能一棒子打死,应该取其长 补其短 看了路由和orm部分,和前端backbone之类的结合应该很契合,还是很不错的,另外composer是个很好东西,关于效率问题,web程序的运行效率从来就不在框架,而在数据库,框架那一点点消耗根本不会是什么负担。

补充一下,之前说框架的消耗忽略不计也是不完全正确的,有个奇葩的,从前用drupal二次开发的时候一个简单的列表页面竟然单线程消耗20多M内存,原因就是drupal本身的配置太复杂了(不是我的配置复杂,而是系统本身复杂),为了内容配置的最大自由度,什么变量都往页面里塞。去stackoverflow上问了,得到的回答是drupal里这是正常的。。drupal总的来说也是一个框架,只不过这个框架带着一个cms系统而已,当然这样的系统对外是必须一系列优化才能用的。。

laravel框架还是蛮不错的,可以说非常全面,配合phpstorm开发还是很开心的。。

分享两套教学视频,自己从laracast.com上一个一个拖下来的,无字幕。。
laravel-whats-new 链接: 百度云 请输入提取密码 密码: 6cwy
laravel-fundamentals 链接: 百度云 请输入提取密码 密码: aw2h

还有一个phpstorm使用经验的分享,如果还用sublime甚至zde的朋友尽快换phpstorm吧,可以说sublime的功能它都有,但还有一些高级ide才有的功能,另外即使是vim的用户也应该尝试一下,phpstorm有插件也可以模拟vim的操作,并享受其他好处。
how-to-be-awesome-in-phpstorm 链接: 百度云 请输入提取密码 密码: hgga 我观察到一个现象:通常觉得Laravel难学且无用的开发者中,只会PHP一门语言,或者说,没有静态编译型语言(如C/C++/Java/Go等)使用经验的开发者占绝大多数。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.7万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号