面向对象

本文介绍了PHP面向对象的基本概念,包括对象的创建与使用、构造函数与析构函数、封装及其实现方式,并演示了如何利用__set()和__get()方法来操作封装后的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建一个和多个对象 次使用 new 函数 ,进行对类的实例化

2、对象中的$this关键字 $this关键字是用来访问当前对象中的对象属性和对象方法的系统变量

3、初始化对象  __construct()

  1. 原PHP4中我们需要建立一个 与类名称相同的一个对象方法
    class MyPc{
    
       function MyPC ( ) {
    
            初始化操作
             
           }
    }
  2. 在PHP5中继承了PHP4但为了更 好的针对面向对象开发有了固定函数

    class MyPc{
    
       function __construct() {
    
            初始化操作
             
           }
    }
    

      

4、析构函数 __destruct() 能够在对象释放时自动被调用的方法被称为析构函数

PHP4支持析构函数,通过登录在PHP运行终止时用 register_shutdown_function()调用的函数,只有类似的实行方法。 PHP5正式支持析构函数,能够在类中指定对象释放时的动作。

当对象内部的操作执行完毕的时候, __destruct()被调用, 然后对象所使用的内存被释放出来。

规则:后进先出

class MyPc {
  ……

    function __destruct() {
        ……
      }
}

  

 

 

 

<?php
class myPc
{
	public $name;
	var $price;
	function vod()
	{
		return $this->name."播放电影";
	}
	function game()
	{
		return $this->vod()."玩游戏";
	}
	function intenet()
	{
		return "上网";	
	}
}

$pc1=new myPc();
$pc2=new myPc();
$pc1->name="家用电脑";
$pc2->name="公司电脑";
echo $pc1->vod()."<br />";
echo $pc2->game();

  

<?php
class myPc
{
	public $name;
	var $price;
	//构造函数
	function __construct($name="",$price="")
	{
		$this->name=$name;
		$this->price=$price;
	}
	function vod()
	{
		return $this->name.$this->price.":播放电影";
	}
	function game()
	{
		return $this->vod().$this->price."、玩游戏";
	}
	function intenet()
	{
		return "上网";	
	}
	//析构函数 后进先出
	function __destruct()
	{
		echo "<br />======".$this->name."<br />";
	}
}

$pc1=new myPc("家用电脑1","台式机");
$pc2=new myPc("公司电脑2","笔记本");
echo $pc1->vod()."<br />";
//echo $pc1=null;
echo $pc2->game();
?>

  二、封装是把一些相关的属性和行为隐藏起来,从而得到保护和安全

封装关键字

public 表示全局,类内部外部子类都可以访问;

protected表示受保护的,只有本类或子类或父类中可以访问;

private表示私有的,只有本类内部可以使用;

<?php
class myPc
{
	public $name;
	function __construct($name="")
	{
		return $this->name=$name;
	}
	function power()
	{
		return $this->name."打不开电源,正在开机......";
	}
}
$pc1=new myPc("我的电脑");
echo $pc1->power();
?>

  

<?php
class myPc
{
	private $name;
	function __construct($name="")
	{
		return $this->name=$name;
	}
	private function power()
	{
		return $this->name."打不开电源,正在开机......";
	}
	function ok()
	{
		return $this->power()."开机成功!!!";
	}
}
$pc1=new myPc("我的电脑");
echo $pc1->ok();
?>

  三、封装相关函数:__set() , __get()

  __get() 取得当前类中封装过属性或方法并转换成共有属性  

<?php
class myPc
{
	private $name;
	function __construct($name="")
	{
		return $this->name=$name;
	}
	function __get($name)
	{
		return $this->name;
	}
	private function power()
	{
		return $this->name."打不开电源,正在开机......";
	}
	function ok()
	{
		return $this->power()."开机成功!!!";
	}
}
$pc1=new myPc("我的电脑");
echo $pc1->ok();
echo $pc1->name;

?>

  __set() 取得当前类中封装过私有属性或者方法重新执行或赋值操作 __set($Name,$Value)

<?php
class myPc
{
	private $name;
	function __construct($name="")
	{
		return $this->name=$name;
	}
	function __get($name)
	{
		return $this->name;
	}
	function __set($n,$v)
	{
		$this->$n=$v;
	}
	private function power()
	{
		return $this->name."打不开电源,正在开机......";
	}
	function ok()
	{
		return $this->power()."开机成功!!!";
	}
}
$pc1=new myPc("我的电脑");
$pc1->name="11";
echo $pc1->ok();
echo $pc1->name;
?>

  四、1、继承关键字 :extends

PHP类的继承,我们可以理解成共享被继承类的内容。PHP中使用extends单一继 承的方法,请切忌!(非C++多继承)被继承的类我们叫做父类(基类)继承者成为 子类(派生类)

 基类名 :: 方法名称

<?php
class base1
{
	function dayin()
	{
		return "root print <br />";
	}
}
class base2 extends base1
{
	function dayin()
	{
		return base1::dayin()."soot print <br />";
	}
}
$p=new base2();
echo $p->dayin();
?>

  

转载于:https://www.cnblogs.com/xyh592/articles/4330394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值