如何挑选PHP框架?
这个问题是我面试的常用起手问题,所以在SF看到这个提问的时候,就抽时间回答了一下。这里做一些整理和补充。
很多时候,讨论问题从抠概念出发是个好想法。框架是团队在项目初期选定的开发框架,或者在长期开发过程中提炼的公共逻辑等。所以无论是初期挑选框架、是中途重构更换框架、还是需要抽离团队内部自己的框架,都应当以下面三个角度综合考虑
团队
项目
框架本身
团队成员情况 & 未来团队成员情况 & 所在地职业市场情况
如果团队现在和未来都只有你一个人(比如自己的toy project),那选自己最想用的就好。但只要不是这个情况,你最好先得了解市面上常见的各种框架,然后忘记自己的个人偏好。
了解你的团队成员的现在情况,考虑你的团队未来的发展速度,未来可能加入的团队成员的情况,以及你所在地职业市场情况。打比方说,Laravel经常是个不错的选择,但如果你在产业不发达的小城市,团队又必须高速发展大量招人,选择Laravel可能很快会让你陷进“composer和现代PHP技能培训班”的窘境,而一些更“接地气”的框架则能让你的团队迅速扩张,快速满足业务发展的需求
项目生命周期 & 未来演变方向
有的项目,作为贵司的主营业务是需要长期维护,持续迭代的。而另一些项目可能作为一些边角、过渡的项目,可能做完以后不会再有什么后续的需求。最后还有一些外包/类外包的项目,交付以后就没有需求/后续需求可以当另一个项目。
再大的项目,需求再多,如果是第三种,无需考虑未来演变的,那么框架的扩展性就能够被牺牲(从而换取开发速度或其他好处),打比方说基于一些成品二次开发的选择就可以被考虑。再小的项目,如果是贵司的主营业务,持续迭代的,那么就算工作量再小,也必须慎重考虑框架的扩展性。
那么,什么是框架的扩展性呢? CI是扩展性很好的框架吗?ZendFramework1/2是扩展性很好的框架吗?
答案是,看未来演变方向。有的项目未来的压力在访问流量大,有的压力在数据量大检索频繁,也有项目压力在需求迭代快,变动频繁而周期短。项目面临的问题越是普遍,那么预设各种解决方案的框架可能越能减少重复造轮子,反之项目面临的问题越是极端,那么轻量化的那些框架可能更适合让你的团队自己研究解决方案对接到框架中。另外,项目维护的时间越长,变动越难预测,采用预设各种解决方案的框架的风险就会越大(那些预设的解决方案恰好能解决你的每个问题的概率越来越小)
框架本身的基本素质
性能和跑分。除了phalcon和Yaf两个C实现的框架,其他框架请认为一样快。另外除非你在主持类似新浪微博更换PHP框架这样的事,或者说除非你管理的项目web机器超过100台,请忽略PHP框架的性能因素
psr和composer亲和性。这是双刃剑,前面已经聊过怎么看待这个特质了。
安全性。某些框架甚至本身自己有安全漏洞不多说。另外如果框架层面提供了一些安全方面的东西,建议还是要简单看一遍代码,有时那可能反而不如自己写。
功能性。也就是预设的解决方案的数量和质量,前面有提过。
模块化程度。框架内的各个部分是否能够自定义,自定义的代价多高。另一个角度是框架的各个部分是否能脱离框架运行。
表达能力(业务功能需要多少代码量来实现),这三个特性(表达能力、功能性、模块化程度)互相冲突,无法达到三者兼得。功能丰富,模块化程度又高可以随意定制、替换的框架,往往普通的业务代码也要写一堆。一句话能写出一大堆功能的框架,往往模块化程度不理想,不容易自定义。 模块化程度高,而业务代码不?嗦的框架,则往往没有丰富的预设功能。
周边生态和活跃程度以及兼容性。活跃的框架就还有成长和改进的空间,但相应过于活跃有时会导致应用无法兼容。另一个指标是周边的生态,有没有其他人基于这个框架开发一些周边的模块/插件之类的东西,以及文档的丰富程度、出问题后能是否容易找到的解决方案等。
“无招胜有招”
-- 谈composer和psr-7和我心目中未来十年的PHP框架
(本节内容仅仅是我个人的判断,另外基于中国国情,这个未来可能也还是老外先享受到)
PHP是个相对古老的语言,PHP框架也是个相当古老的概念了。我认为隔壁的NodeJS社区很好的为我们示范了真正“web框架”应有的形态。以依赖解决方案npm为核心,connect到express为代表的中间件架构为骨架,周围围绕着星罗密布的数不胜数的中间件。中间件架构设定了web请求和响应的标准接口,周围的其他项目以这些接口为基础开发各种功能。工程师要做的就是找到合适的中间件安插到项目中,或者自己写合适自己情况的中间件(当然最好是开源出来回报社区咯)。于是你会发现相当于“PHP框架”概念的那些项目基本行不通(sails已经是做的最好的了?)
这也是我对未来PHP框架的判断。大而全的“PHP框架”时代已经过去了。不用composer的,或者假装自己用composer的那些框架没有未来。基于composer的,模块化组件化的项目,未来在强势的输入输出标准统一下,会爆发出惊人的生产力。symfony/http-foundation本来是个不错的选择,社区也有对应的中间件化的努力。但目前看来,怀胎已久的PSR-7更可能成为未来的赢家。有强力的标准和解构化的中间件生态,社区才有充分的竞争,开发者才有充分的选择权,A2框架 视图层巨烂但路由很漂亮,B2框架 路由好用但视图糟糕?下一代A3和B3都一样支持PSR-7,拿回家自己拼接就好!
广告时间: 基于这样的判断,connect的PHP移植又没有很多star的情况下,我花了一些时间撸了自己的中间件架构mcfog/nimo,欢迎围观和star
原文地址:http://inside.mcfog.wang/2015/09/ichizon-d/

종종 키워드와 추적 매개 변수로 혼란스러워하는 긴 URL은 방문자를 방해 할 수 있습니다. URL 단축 스크립트는 솔루션을 제공하여 소셜 미디어 및 기타 플랫폼에 이상적인 간결한 링크를 만듭니다. 이 스크립트는 개별 웹 사이트 a에 유용합니다

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

이것은 Laravel 백엔드가있는 React Application을 구축하는 데있어 시리즈의 두 번째이자 마지막 부분입니다. 이 시리즈의 첫 번째 부분에서는 기본 제품 목록 응용 프로그램을 위해 Laravel을 사용하여 편안한 API를 만들었습니다. 이 튜토리얼에서는 Dev가 될 것입니다

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

2025 PHP Landscape Survey는 현재 PHP 개발 동향을 조사합니다. 개발자와 비즈니스에 대한 통찰력을 제공하는 프레임 워크 사용, 배포 방법 및 과제를 탐색합니다. 이 조사는 현대 PHP Versio의 성장을 예상합니다

이 기사에서는 Laravel 웹 프레임 워크에서 알림 시스템을 탐색 할 것입니다. Laravel의 알림 시스템을 사용하면 다른 채널을 통해 사용자에게 알림을 보낼 수 있습니다. 오늘은 알림을 보낼 수있는 방법에 대해 논의합니다


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
