欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php面向对象 笔记

程序员文章站 2024-03-17 16:43:34
...

创建类

<meta charset="utf-8">
<?php
//创建类 命名 大写 驼峰命名法
class Student{
	// public 公共权限
	// protected 只能在本类和子类中访问
        // private 私有的 只能本类使用 类外 子类无权访问
    //定义属性
	public $name = "小明";
	public $age = 18;
    //定义方法
	public function show ($name = "小明",$age = 18) {
		return "{$name}的年龄为{$age}";
	}
	public function showThis(){
		//php中 this 通过 $this 来使用 $this只能在成员方法中使用
		echo "{$this->name}的年龄为{$this->age}";
	}
}

实例化 创建对象

$a = new Student();

调用方法

echo $a->show("小红",24);
echo  "<br/>";
$a->showThis();
echo  "<br/>";

输出变量

echo $a->name;
echo  "<br/>";

新增属性

$a->newData = "巴拉巴拉巴拉";
//打印查看
var_dump($a);

删除属性

unset($a->name);
var_dump($a);

php面向对象 笔记

定义类长量

  • 常量 值永远不会变
  • 常量就是类的常量与对象无关
  • 常量在内存中只有一份 不会随着对象的增加而增加
  • 常量可以被所有对象共享
    • 常量必须大写
    • 访问常量 类名:常量名
    • :: 静态化调用方式
echo "<hr/>";
class Log{
	const DB_LOCALHOST = "127.0.0.1";
	const DB_USERNAME = "root";
	const DB_PASSWORD = "root";
	public function show() {
		echo "主机名称:".Log::DB_LOCALHOST."<br/>";
		echo "用户名称:".Log::DB_USERNAME."<br/>";
		echo "用户密码:".Log::DB_PASSWORD."<br/>";
		echo "<hr/>";
	}
}
$b = new Log();
$b->show();
//常量无需实例化后才能调用
//直接 类名::常量名 即可调用
echo "主机名称:".Log::DB_LOCALHOST."<br/>";
echo "用户名称:".Log::DB_USERNAME."<br/>";
echo "用户密码:".Log::DB_PASSWORD."<br/>";
echo "<hr/>";

php面向对象 笔记

静态属性和静态方法

php面向对象 笔记

echo "静态属性与静态方法";
class Data{
	//公共静态属性
	public static $title = '18计算机三班';
	//私有的静态方法
	private static function showTitle() {
		return "<hr/>";
	}
	public function show($name,$age) {
		$text = $name."今年".$age."岁了";
		$text.= Data::showTitle();
		
		echo $text;
	}
}
$c = new Data();
echo "<br/>";
$c->show("小明",18);
$d = new Data();
echo "<br/>";
$d->show("小红",24);

php面向对象 笔记

slef 关键字

  • self 代表当前类 相当于$this代表当前对象
  • $this通过->调用属性和方法
  • self通过::调用常量、静态属性、静态方法
  • $this只能用在成员方法中:self可以用在成员方法、静态方法中
class Data{
	//公共静态属性
	public static $title = '18计算机三班';
	//私有的静态方法
	private static function showTitle() {
		return "<br/>";
	}
	public function show($name,$age) {
		$text= self::$title;
		$text.= self::showTitle();
		$text.= $name."今年".$age."岁了";
		echo $text;
	}
}
$c = new Data();
echo "<hr/>";
$c->show("小明",18);
$d = new Data();
echo "<hr/>";
$d->show("小红",24);

php面向对象 笔记

构造方法

  • 构造方法在new 的时候自动运行
  • public function __construct(){}
  • 构造函数没有返回值 不支持参数返回
// 创建手机类
class Modile{
	//在项目中 成员属性一般不设值
	public $name; //名称
	public $pinpai; //品牌
	public $pirce; //价格
	public $city; //产地         这里是形参 不是 成员属性
	public function __construct($name,$pinpai,$pirce,$city){
		$this->name = $name;
		$this->pinpai = $pinpai;
		$this->pirce = $pirce;
		$this->city = $city;
	}
	public function show(){
		$text = "手机名称:{$this->name}";
		$text .= "<br/>手机品牌:{$this->pinpai}";
		$text .= "<br/>手机价格:{$this->pirce}";
		$text .= "<br/>手机产地:{$this->city}";
		return $text;
	}
	
}

$e = new Modile('华为P30','华为',8888.88,"深圳");
echo $e->show();

php面向对象 笔记

析构方法

  • 当销毁一个对象前 自动调用
  • 名称是固定的: __destruct()
  • 析构方法没有参数 是成员方法
  • 作用: 垃圾回收。列如:可以断开数据库的链接
//析构方法 代码结束自动销毁
class ClassA {
	public function __destruct(){
		echo "<br/>对象即将销毁";
	}
}
$f = new ClassA();
echo "<br/>最后一行代码执行完毕";

// 销毁对象后
class ClassB{
	public function __destruct(){
		echo "对象即将销毁0.2";
	}
}

$f = new ClassA();
echo "<hr/>";
unset($f);

echo "<br/>最后一行代码执行完毕0.2";

php面向对象 笔记

在线人数案例

  • 构造人数加一 析构人数减一
//在线人数案例
class User{
	//私有静态num
	private static $num = 0;
	public function __construct(){
		self::$num++;
	}
	
	public function showNum(){
		return self::$num;
	}
	
	public function __destruct(){
		self::$num--;
	}
}

$g = new User();
$h = new User();
$i = new User();
$j = new User();
$k = new User();
echo "<br/>当前在线人数为:".$g->showNum()."人";

php面向对象 笔记