课程很有用,但是当我写一堂课时,我总是认为它是我剧本上的一块沉重的摇滚乐。我觉得应该很少使用课程。但与此同时,我们都对OOP范式感到忧心忡忡。
脚本是否应该具有免费功能?我应该使用上千个类来使脚本更干净吗?表演怎么样? class::method()
需要比简单function()
更多的时间吗?
OOP的真正含义是什么?我有点困惑。
由于我发现了OOP,我看不到随机函数。我很痴迷。我看不到没有父类的函数。我宁愿用一个方法创建一个类,然后单独看到该函数。这样对吗?那里有纯OOP CMS的例子吗?
答案 0 :(得分:6)
对于PHP程序员来说,最重要的是,在我看来,除了他的经验之外,还有他的工具包。也就是说,他/她从远古时代开始,向内和向后编写的代码。
对我而言,在这种情况下,OOP的优势在于明确。拥有一个你知道的课程将始终通过简单的方法预先形成你想要的东西对于你自己和团队成员来说更容易,然后只需要调用多个静态函数。虽然你可以认为一个satic函数库包含同样的目的,但在我看来,类更容易阅读和理解。例如,在我的自定义会话类中,程序员可以查看我的代码并查看,
$my_session = new session();
$my_session->start();
if ( ($session_errno = $my_session->error()) !== FALSE)
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
并且很容易理解这个应用程序中的会话是通过我们的自定义会话类处理的,并且应该返回某种类型的成功/失败而不必检查库/类。同时,这样的电话,
session_start();
if (session_error())
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
没有说清楚session_start()
不是默认的PHP会话处理程序,而是会调用session_set_save_handler()
中定义的函数,这些函数包含在一些可能不是的全局包含的大型列表中很容易找到一个大型应用程序。还不是很清楚session_error()是一个返回自定义会话处理程序设置的错误的函数,而不是可能在已生成的会话中主动查找会话问题并且完全独立于PHP的默认会话的函数。
这不是一个很好的例子,但我认为这是一个很好的例子。我没有详细介绍在整个应用程序中保护数据的优点,继承以及使OOP有用的所有其他内容。
但很快,想象一下访问应用程序的MYSQL数据库的类。设计类以花费大量时间来使用预准备语句,记录错误并根据需要向程序员提供适当的逻辑。通过简单地调用类的公共“数据访问”功能,团队可以更少地担心数据库访问问题,而不必担心致命错误,错误逻辑或危险SQL(注入等)。
这可以通过你建议的静态函数来完成,但是静态库中的每个函数都作为一个整体暴露给应用程序,而只有公共和'SAFE'函数暴露给使用数据库访问的应用程序宾语。程序员不会无意中调用一个危险的函数,如果没有被其他函数正确初始化可能会导致重大问题,程序员也不会故意抑制错误或受类保护的其他数据,就像他们可以使用一系列静态函数和全局变量一样。 / p>
虽然可以在没有任何对象的情况下设计好的应用程序,但优秀的程序员应该享受对象在适当的时候提供的可用性,可扩展性和保护。
我将以最后的比喻离开。对象就像工厂内的专用机器和工具。虽然工厂本身在其装配线上拥有许多这些独特的工具,从简单的弯曲制动器到CNC机床和自动化机器人,它们只是团队的一小部分,可以帮助更多的劳动者和管理者,我们的静态功能,做一个更好的汽车,卡车或自行车的工作。
答案 1 :(得分:5)
不要只使用OOP将一组看似相关的功能组合在一起。
使用OOP来对有状态和无状态“事物”进行逻辑表示,这些事物可能被操纵,具有属性或以各种方式使用。
请勿使用OOP,因为此处有人说你应该这样做。
请使用OOP因为您在data encapsulation中看到了好处。
如果您认为这会让您的老板满意,请不要使用OOP。
请使用OOP因为你知道塔科马是丰田是PassengerVehicle是一辆车。
在你至少查看Gang of Four的设计模式之前,不要使用OOP - 好处变得更加清晰。
请使用OOP,因为您希望为使用此类开发的人提供易于使用的界面。
答案 2 :(得分:1)
我认为你对 OOP 编程有一些不好的看法,因为你从来没有做过。 Quake 3 是使用纯 C 编写的,没有任何类和 OOP ,这样就可以证明你可以在不使用的情况下做好事OOP 。
但如果你想要,你可以使用它。类中的继承在实践业务逻辑编程中具有很小的功能,在框架编程中要好得多。
如果您决定使用 OOP 进行编程,那么编写一些小函数的小对象,这些函数执行小的操作,而不是大的不可读的类,而不是直观的函数,那么您将在代码中保持干净
答案 3 :(得分:1)
看看这个:
课程不过是一个 变量和函数的容器 影响那些变量,但他们 对于小型建筑来说非常有用 组件 - 几乎是小型项目。 不同之处在于你不需要 向他们发出嘘声 它们可以插入大多数脚本中 轻松 - 只是一个要求或包括 在顶部的声明。一类 描述了一个'对象'。一个对象是 收集较小的对象,只是 喜欢上课。
答案 4 :(得分:0)
如果你认为你的物体是沉重的岩石,这可能是一件好事。 由于PHP本质上不是非常有用(除了一些默认扩展),所以有 程序功能不够,大约6000,不是吗?
我鼓励你继续OOP。数百个课程似乎过头了。 对于初学者,将所有需要放在一个对象中,并在适当时拆分为子类。
答案 5 :(得分:0)
对此没有简单的答案。
虽然一般来说你应该坚持使用功能或OO方法,但与Java相比,PHP的优点之一就是它允许函数作为一流实体。
最重要的是要记住,你用一种语言和风格编写程序,让人们可以阅读!计算机可以解析它们的事实非常巧合。
当然,调用静态方法与函数的开销不应该是一个考虑因素 - 你肯定会对过早优化感到内疚。如果你担心这个,为什么不自己测量呢?你会发现它虽然速度较慢,但差别非常小 - 在编写代码时不应覆盖主要目标(即它应该工作,它应该尽可能清楚它是如何工作的,它不应该有任何一面效果 - )。