课程很有用,但是当我写一堂课时,我总是认为它是我剧本上的一块沉重的摇滚乐.我觉得应该很少使用课程.但与此同时,我们都对OOP范式感到忧心忡忡.
脚本应该没有免费功能吗?我应该使用上千个类来使脚本更干净吗?表演怎么样?是否class::method()
需要这么多的时间,然后一个简单的function()
?OOP的真正含义是什么?我有点困惑.
自从我发现OOP以来,我看不到随机函数.我很痴迷.我看不到没有父类的函数.我宁愿用一个方法创建一个类,然后单独看到该函数.这样对吗?那里有纯OOP CMS的例子吗?
对于PHP程序员来说,最重要的是,在我看来,除了他的经验之外,还有他的工具包.也就是说,他/她从远古时代开始,向内和向后编写的代码.
对我来说,在这种情况下,OOP的优势在于明确.拥有一个你知道的课程将始终通过简单的方法预先形成你想要的东西对于你自己和团队成员来说更容易,然后只需要调用多个静态函数.虽然你可以认为一个satic函数库包含同样的目的,但在我看来,类更容易阅读和理解.例如,在我的自定义会话类中,程序员可以查看我的代码并查看,
$my_session = new session();
$my_session->start();
if ( ($session_errno = $my_session->error()) !== FALSE)
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
Run Code Online (Sandbox Code Playgroud)
并且很容易理解这个应用程序中的会话是通过我们的自定义会话类处理的,并且应该在没有检查过库/类的情况下返回某种类型的成功/失败.同时,这样的电话,
session_start();
if (session_error())
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
Run Code Online (Sandbox Code Playgroud)
并不清楚它session_start()
不是一个默认的PHP会话处理程序,而是它将调用定义的函数,session_set_save_handler()
其中包含一些可能不容易在大型应用程序中找到的全局包含的大型列表.session_error()也是一个函数,它返回由自定义会话处理程序设置的错误,而不是一个可能在已生成的会话中主动查找会话问题并且完全独立于PHP的默认会话的函数.
这不是一个很好的例子,但我认为这是一个很好的例子.我没有详细介绍在整个应用程序中保护数据的优点,继承以及使OOP有用的所有其他内容.
但很快,想象一下访问应用程序的MYSQL数据库的类.设计类以花费大量时间来使用预准备语句,记录错误并根据需要向程序员提供适当的逻辑.通过简单地调用类的公共"数据访问"功能,团队可以更少地担心数据库访问问题,而不必担心致命错误,错误逻辑或危险SQL(注入等).
这可以通过你建议的静态函数来完成,但是静态库中的每个函数都作为一个整体暴露给应用程序,而只有公共和'SAFE'函数暴露给使用数据库访问对象的应用程序.程序员不会无意中调用一个危险的函数,即如果没有被其他函数正确初始化可能会导致重大问题,程序员也不会故意抑制错误或受类保护的其他数据,就像他们可以使用一系列静态函数和全局变量一样.
虽然可以在没有任何对象的情况下设计好的应用程序,但优秀的程序员应该享受对象在适当时提供的可用性,可扩展性和保护性.
我将以最后的比喻离开.对象就像工厂内的专用机器和工具.虽然工厂本身在其装配线上拥有许多这些独特的工具,从简单的弯曲制动器到CNC机床和自动化机器人,它们只是团队的一小部分,可以帮助更多的劳动者和管理者,我们的静态功能,做一个更好的汽车,卡车或自行车的工作.