博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重拾PHP--面向过程编程与基于对象编程
阅读量:6096 次
发布时间:2019-06-20

本文共 1898 字,大约阅读时间需要 6 分钟。

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

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

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

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

  面向过程风格:

  面向对象风格:

'; } //析构函数 public function __destruct() {
echo '类"',__CLASS__,'"已被释放!
'; } public function setProperty($new) { $this->name=$new; } public function getProperty() { return $this->name. "
"; } public static function plusOne() {
return "当前数字是".++self::$count."
"; }} //类继承 class MySonClass extends MyClass {
public function newMenthod() {
echo "来自类".__CLASS__."的新方法
"; } } //创建一个对象$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 "文件结束。
"; ?>

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

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

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

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

"; }}?>

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

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

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

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

  

 

 

转载于:https://www.cnblogs.com/senbiao/archive/2012/12/28/2836650.html

你可能感兴趣的文章
win 2003 ftp
查看>>
我的友情链接
查看>>
Linux之命令学习小记
查看>>
Linux下各文件夹的含义及解释
查看>>
使用装饰器时带括号与不带括号的区别
查看>>
Android架构和特征
查看>>
第五十一课 NoSQL基础概念及MongoDB应用、数据库分配概念
查看>>
nginx 安装部署
查看>>
2012年的十一长假,一些想记录下来的情节
查看>>
linux命令--cal
查看>>
Axure 8.1.0.3381注册码
查看>>
awk数组、函数、脚本
查看>>
Win32项目与控制台应用的区别
查看>>
Unicode之痛
查看>>
负载均衡和应用优化基础
查看>>
iOS 富文本类库RTLabel
查看>>
通过USB over network解决USB设备共享问题
查看>>
记 潮州dell pe2950的开机故障
查看>>
本地怎样访问虚拟机上的服务器
查看>>
One1.4实现的路由算法说明
查看>>