页面正在进行中!
类、对象、服务、实体、价值-对象
异常是面向对象编程的工具,它提供了一种优雅的方式来抛出和处理(对待)应用程序错误。
异常首先被抛出(thrown),被处理(try),被捕捉(catch)。只有投掷是强制性的。
异常生成理念
在异常出现之前,编程中的错误处理是非常复杂的,因为我们必须依赖函数的返回值,并以自己的方式捕捉它们,并做出相应的行为。
事实上,函数本身并不执行错误处理,这可能会导致致命的问题,但David在Programmers don't ignore errors中已经写到了这一点。
一个被遗忘的错误处理的例子。
…
面向对象编程的基本属性之一是继承和封装。有了这些功能,你将能够轻松地构建复杂的应用逻辑,同时保持良好的实现可读性。
继承的原则
继承表达了一个类的实现是基于另一个类的。在OOP术语中,我们谈论后裔(继承的类)和祖先(我们继承的类)。
一般来说,继承的工作方式是,子代获得祖代的所有特性,或者完全采用祖代的特性,或者以自己的方式修改它们,或者完全覆盖它们并使用自己的实现。
这种方法的使用非常广泛,许多设计模式都使用了继承。
继承的真正用途--应用程序中的展示者…
有一个著名的笑话说,程序员只有在自己写了框架之后才开始使用框架,并且发现它没有任何进展。这件事的有趣之处在于它是真的。我自己也有过这样的经历。两次,甚至两次。
然而,即使在Nette的主页上,也说。
真正的程序员不使用框架。他们通过命令行直接向服务器编写网络应用。这是对他们的赞美。对于我们其他人来说,Nette将使我们的工作变得更容易、更愉快。
框架在应用程序开发中的作用
我相信你自己也知道这一点。
你得到了一个伟大项目的想法,于是你开始直接用纯PHP编写绿地代码.....…
OOP的主要原则之一是**封装原则,它说复杂的问题应该被分解成许多小问题,我们可以独立地同时解决。同时,我们作为用户并不关心它是如何发生的,数据(内部状态)仍然是孤立的。
例如,如果我们要解决的问题是如何根据用户查询的表达式"(5+3)*(2/(7+3)) "返回结果 "1.6",可能我们都无法写出一个能一次性解决这个问题的函数或方法。
**TIP:**在将数学表达式处理为字符串一文中,对这类例子有一个现成的解决方案,但要做好准备,这并不容易。…
方法代表了一个对象的行为,因为它们允许你处理其内部状态,以及影响对象之间的关系。
在现实世界中表示方法
考虑任何现实世界的物体,例如一只猫。一只猫有某些属性(名字、颜色、体重......),我们用属性来描述,然后还有行为(喵喵叫、走路、睡觉......),我们用方法来描述。由于世界上有很多猫("于是我像打雷一样吠叫,让有一百万只猫"),重要的是要记住,方法是一种普遍的东西,同样适用于所有特定类型的对象。
实际执行一种方法
在语言语法方面,让我们为一只猫定义一个类。…
设计模式是思考编程的方式。
它们提供了一个建议、现成的做法、最佳实践和对发展的见解的集合。对于每种编程范式和任务类型,都有某些设计模式是最适合的。
优点--为什么使用设计模式?
在编程中,解决某些类型的问题是重复性的,所以选择一种方法来解决这些问题并不断重复这种方法是有意义的。
特别是在团队开发过程中,当每个人都知道应用程序将如何开发(根据哪种设计模式)时,他们就会应用它,这就是主要的好处。这样就省去了不必要的几十个小时来调试写得很奇怪的代码,并试图理解作者的意图原则。
MVC-…
我相信你知道这一点,在为PHP脚本编程时,我们把代码分成许多文件,为了让所有的部分都能使用,我们用一系列的 "include"、"require "或最好是 "require_once "调用来加载它们,这样可以保证只加载一次。
在代码中,它看起来像这样。
require_once 'Router.php';
require_once 'Page.php';
require_once 'Paginator.php';
…
面向对象的编程是一种范式,一种对如何编程的看法。你很快就会看到,OOP给所有的常见问题和困难带来了相当根本的简化,这些问题在实际编程中被反复解决。
基本理念
面向对象编程的基本思想是将一个大型应用(复杂的任务)划分为许多小部分,我们可以优雅地独立解决。
例如,如果我们为一个机票预订系统编程,这是一个非常复杂的项目,要解决成千上万的情况。如果我们能将所有复杂的逻辑分解成许多层次和部分,我们就能很容易地理解整个复杂的系统,并对各个子任务进行独立编程。
OOP和将代码划分为对象的实际优势…
欢迎来到在线课程《PHP中的OOP》的第一篇文章。有关完整的文章清单,请访问概览页。
内容说明:
这个系列的目标是最好地解释面向对象编程的精髓,这样你就不必花几百个小时去实验那些没有意义的东西了。所有的技术和教程都来自于实践,并按照我自己在学习编程时的想法来解释。一些的概念被大大简化*,以牺牲100%的事实正确性为代价,因为我相信,**主要理解原则,至少对问题有一些了解,总比迷失在编程中,把一切都看成一个大麻烦要好。…