在看到 Yii 框架的时候,还有 Discuz 的源程序,喜欢在初始化和 dispatch 之前 new 一个 application 对象,这个对象有什么用吗?或者说有什么好处吗?
一般不是初始化和配置之后,再路由分发到 Controller/Action 一级开始执行,为什么在这中间要多一层 application 对象呢?
PHP 执行完生命周期就结束了,不管是 require/include/autoload 到最后其实都相当于一个文件对吗?需要的全局参数我可以 define/$_SERVER/$_ENV,需要的全局方法我可以 public static function,那上面说的那个 application 对象究竟有什么用处呢?
回复内容:
在看到 Yii 框架的时候,还有 Discuz 的源程序,喜欢在初始化和 dispatch 之前 new 一个 application 对象,这个对象有什么用吗?或者说有什么好处吗?
一般不是初始化和配置之后,再路由分发到 Controller/Action 一级开始执行,为什么在这中间要多一层 application 对象呢?
PHP 执行完生命周期就结束了,不管是 require/include/autoload 到最后其实都相当于一个文件对吗?需要的全局参数我可以 define/$_SERVER/$_ENV,需要的全局方法我可以 public static function,那上面说的那个 application 对象究竟有什么用处呢?
这个APP对象用处可大了:
- 测试:一个应用就是一个app对象,所以单元测试的时候只要创建app对象-测试-销毁app对象这样就可以很简单地搞定测试前的setup和测试后teardown;并且可以通过继承app对象,利用多态来打桩,单元测试轻松搞定。
- 避免全局变量:全局变量是邪恶滴~ 消灭全局变量~ 但是有很多配置是全局的怎么办?都塞到这个app对象里吧
- 通过不同类型的app对象,可以轻松改变程序对外的接口 -- 拿Yii框架来说,搞个CWebApplication则就是正常的web应用,换个CConsoleApplication就摇身一变——成了一个控制台应用,好神奇地说~
- 还没想出来...
类似的app对象一般是作为服务容器存在的,例如symfony2和mini型的silex,都是相同的概念,把一些实例化的对象啊配置项啊什么的塞到这个app对象里,那么只要你能访问app对象,就可以拿到这些东西,这种方式我很喜欢。
有个抽象出来的专门作为依赖注入容器的轻便库叫pimple,有时间你可以了解下。

ThesecrettokeepingaPHP-poweredwebsiterunningsmoothlyunderheavyloadinvolvesseveralkeystrategies:1)ImplementopcodecachingwithOPcachetoreducescriptexecutiontime,2)UsedatabasequerycachingwithRedistolessendatabaseload,3)LeverageCDNslikeCloudflareforservin

You should care about DependencyInjection(DI) because it makes your code clearer and easier to maintain. 1) DI makes it more modular by decoupling classes, 2) improves the convenience of testing and code flexibility, 3) Use DI containers to manage complex dependencies, but pay attention to performance impact and circular dependencies, 4) The best practice is to rely on abstract interfaces to achieve loose coupling.

Yes,optimizingaPHPapplicationispossibleandessential.1)ImplementcachingusingAPCutoreducedatabaseload.2)Optimizedatabaseswithindexing,efficientqueries,andconnectionpooling.3)Enhancecodewithbuilt-infunctions,avoidingglobalvariables,andusingopcodecaching

ThekeystrategiestosignificantlyboostPHPapplicationperformanceare:1)UseopcodecachinglikeOPcachetoreduceexecutiontime,2)Optimizedatabaseinteractionswithpreparedstatementsandproperindexing,3)ConfigurewebserverslikeNginxwithPHP-FPMforbetterperformance,4)

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Zend Studio 13.0.1
Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft
