面向对象变成的概念php
须要一一种不一样的方式来考虑如何构造应用程序。经过对象能够在对应用程序所处理的显示任务、过程和思想进行编码是,实施更贴切的建模。OOP方法并非将应用程序考虑成一个将大量数据从一个函数传递给下一个函数的控制线程,而是容许将应用程序建模成一组相互协做的对象,而且这些对象能够独立的处理某些活动。数据库
吐槽:和js挺像的数组
OPP的优势模块化
能够轻松地将单个的业务需求转换为单个的代码模块。函数
代码重用ui
类的模块化this
吐槽:之后问OPP的优势就这样了编码
opp的组成spa
类(class)一个对象的“蓝本”,包含定义属性和方法的实际代码线程
对象(object)某个类的运行实例,包含应用程序运行所须要的全部内容数据和状态信息
继承(inheritance)能够定义一种类型类为不一样类型类的子类型的能力(相似于正方形是一种矩形)
多态(polymorphism)容许一个类定义为多个类范畴的成员(例如,轿车是“有引擎的食物”以及“有轮子的事物”)
接口(interface)是指这样一种作法:设定对象可以作什么,而不具体定义这些功能(如:狗和人都是“能够行走的事物”,可是行走的方式有很大的不一样)
封装(encapsulation)对象就起内部数据的访问进行保护的能力
吐槽:背熟吧,骚年
而后下面开始撸代码了
<?php class Demo{ function sayHello($name){ print"Hello $name"; } } ?>
<?php require_once('class.demo.php'); $objDemo=new Demo(); $objDemo->sayHello('white') ?>
<?php class Demo{ public $name; function sayHello(){ print "Hello $this->name!"; } } ?>
<?php require_once('class.demo.php'); $objDemo=new Demo(); $objDemo->name = 'white'; $obj1Demo=new Demo(); $obj1Demo->name = 'black'; $objDemo->sayHello(); $obj1Demo->sayHello(); ?>
能够将name属性的值设置为任意所需的数据-包括对象、整数数组、文件句柄或任何其余没有意义的值。可是,并不能再设置name属性时执行任何形式的数据验证或更新任何其余的值。
为了解决这个问题,必须以get[property]和set[property name]的函数形式来实现属性。这些函数称为存取器方法
<?php class Demo{ private $_name; public function sayHello(){ print "Hello" . $this->getName() . "!"; } public function getName(){ return $this->_name; } public function setName($name){ if(!is_string($name) || strlen($name)==0){ throw new Exception("Invalid name value!"); } $this->_name=$name; } } ?>
<?php require_once('class.demo.php'); $objDemo=new Demo(); $objDemo->setName('white'); $objDemo->sayHello(); $objDemo->setName(37); ?>
name属性的成员访问级别由Public变成private,而且怎家了一个下划线做为前缀。下划线是建议的命名约定,代表私有的成员变量和函数;
私有的内部成员变量不能从类的外部访问。因为不能直接访问这些变量,所以必需要getName()和setName()存取器方法得到这些信息,从而确保类能够在容许设置值以前检查该值。。。
成员变量或方法能够有3个不一样级别的可见性:公有的、私有的和受保护的。
公有成员能够任意的代码访问。
私有成员只有类自身能够访问。这些成员一般用于类的内部处理买而且可能诸如注入某个数据库链接句柄活配置信息之类的内容。
受保护的成员能够由类自身以及从该类继承的类使用
对于许多将要建立的类,须要在初次实例化该类的对象时执行一些特殊的设置。例如,可能须要从数据库中获取某些信息,或者是初始化某些属性值。经过建立一个称为构造函数的特殊方法能够执行实例化对象所须要的任何活动,改方法在PHP中是经过名为_construct()的函数来实现的。在实例化对象时,PHP将自动调用这个特殊的函数
<?php class Demo{ private $_name; public function _construct($name){ $this->name = $name; } function sayHello(){ print "Hello $this->name!"; } } ?>
<?php require_once('class.demo.php'); $objDemo=new Demo(); $objDemo->_construct('white'); $objDemo->sayHello(); ?>