重拾PHP--面向过程编程与基于对象编程

关于PHP面向过程编程的好处,一个说法是:PHP是一个解释性的语言——这意味着,不像那些编译型的语言,PHP它不会被编译成一个可执行的包,而是被解释并马上执行。PHP被称为是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言。仔细想想也不难理解,因为解析Web页面本身就非常的“过程化”(从一个标签到另一个标签),所以在HTML中嵌入过程化的处理代码是很直接自然的作法。  

  关于面向对象的编程(oop),不同的人可能会有不同的解释,但应该都离不了它的三大特性:封装、继承、多态。

  其中,实现多态有两种方式:覆盖、重载。(PHP貌似不支持重载?)

  在许多编程语言中,“面向对象” 与 “面向过程” 只能使用二者之一来进行编程,但是PHP语言与其他编程语言有不同之处,那就是我们可以自由的选择或者将PHP面向对象和PHP面向过程二者混用 。

  面向过程风格:

<?php echo "翔宇后生!";  ?> 

 面向对象风格:










<?php
//父类
class Myclass
{
public $name=”我是翔宇后生!”;
public static $count = 0;
//构造函数
public function construct()
{
echo ‘类”‘,
CLASS,’”已被初始化!<br />’;
}
//析构函数
public function
destruct()
{
echo ‘类”‘,CLASS,’”已被释放!<br />’;
}

public function setProperty($new)

{

$this->name=$new;

}

public function getProperty()

{

return $this->name. “<br />”;

}
public static function plusOne()
{
return “当前数字是”.++self::$count.”<br/>”;

}

}
//类继承
class MySonClass extends MyClass
{
public function newMenthod()
{
echo “来自类”.CLASS.”的新方法<br />”;
}
}

//创建一个对象
$obj=new Myclass;
//获取属性$name的值

echo $obj->name;

//销毁这个对象(显式触发析构行为)
unset($obj);
//创建一个新的对象
$newObj = new MySonClass;
//调用子类新对象的一个方法
echo $newObj->newMenthod;//调用父类的一个方法
echo $newObj->getProperty();
do{
//不生成MyClass实例,直接调用plusOne()方法
echo MyClass::plusOne();
}while(MyClass::$count < 10)
//在文件末尾输出一条消息
echo “文件结束。<br />”;
?>




  注意:类中的方法,就是属于某一个类的函数,一个类定义多少个方法就决定它的实例能有多少种行为。上面的类,就是创建了两个方法来设置和读取这个类的属性$name。PHP中,在类内,使用$this引用对象自己。在类内引用一个方法也同样使用$this,在类外引用对象则要使用对象名。箭头(->)是访问特定对象包含的属性或方法的一个面向对象构造(其实就是一个引用运算符)。

当程序执行到文件末尾时,PHP将自动释放它使用的全部资源(释放内存),这将触发MyClass对象的析构行为。

覆盖:1.覆盖继承来的属性和方法,只需在新类中重新声明这个属性或方法,就可以简单地覆盖掉它。

     2.覆盖时保留被覆盖方法的功能(在原有基础上扩展),使用parent关键字加上作用域解析符(::)





<?php

class MySonClass{

public function _construct(){

parent::construct();//调用父类的构造函数

echo “在类”.
CLASS__.”中的一个新构造函数。<br/>”;

}

}

?>


  类的属性或方法的可见度:public、private、protected、static


  注意:protected修饰的属性或方法,只能在本类或其后代类的内部访问它。

  一个方法或属性,若声明为static,则不需要生成类的实例即可访问它。只需要提供类的名字,加上作用域解释符和属性或方法的名字即可。

  静态属性的最大好处是,所有实例共享一个值,一个实例修改了一个静态属性的值,其他实例的该属性也自动随之更改。

作者:周森标
出处:
http://zhousenbiao.com
本文版权归作者周森标所有,转载请包含作者签名和出处,不得用于商业用途,否则追究法律责任!