PHP入门-PHP OOP编程

这篇博客介绍了从零开始学习PHP,目标是实现代码审计入门。文章详细讲解了面向对象编程的概念,包括类、属性、方法的实例,并通过三个例子说明了它们的区别。此外,还探讨了`static`和`const`关键字的用法,`static`用于在不实例化类的情况下访问属性和方法,而`const`用于定义不可变的类常量。通过这些内容,读者可以对PHP的OOP编程有初步了解。
摘要由CSDN通过智能技术生成

0x00  写在前面

从零学习php,最终目的实现代码审计入门,软件采用sublime text,环境使用phpstudy搭建,需要有简单的html基础和php基础,跟随流沙前辈视频学习记录。

OOP编程即面对对象编程,面向对象语言需要想到 封装、继承和多态,至于这三者是什么东西,个人还在摸索中。

0x01  面向对象实例

之前个人因学习php反序列化也接触过类、属性、方法等东东;但个人技术有限,又不能很好的讲述出对于这些东东的深层作用,所以保持敬畏,不误人子弟,不作讲解。

 参考链接:PHP: 基本概念 - Manual

三个例子的区别主要在于下面调用的部分。第一个例子

test.php
<?php
	header("Content-type:text/html;charset=utf-8");
	//类:class
	class Person{			//定义一个类名为Person
		//属性 理解为变量
		//修饰符有三种 public protected private
		public $name="人";		//属性前面不加默认为private
		public $age="20";
		public $add="www";

		//方法 理解为函数
		public function eat(){	//方法前面不加默认为public
			echo "吃饭";
		}
		public function sleep(){
			echo "睡觉";
		}
		public function add($a,$b){
			echo $a+$b;
		}
	}
	//类可以实例化为对象
	//类 ->对象

	$xiaoming = new Person();	//实例化对象xiaoming

	echo $xiaoming->name;
	echo "</br>";
	echo $xiaoming->eat();
	echo "</br>";
	echo $xiaoming->add(1,2);

第二个例子展示调用属性但重新赋值

test1.php
<?php
	header("Content-type:text/html;charset=utf-8");
	//类:class
	class Person{			//定义一个类名为Person
		//属性 理解为变量
		//修饰符有三种 public protected private
		public $name="人";		//属性前面不加默认为private
		public $age="20";
		public $add="www";

		//方法 理解为函数
		public function eat(){	//方法前面不加默认为public
			echo "吃饭";
		}
		public function sleep(){
			echo "睡觉";
		}
		public function add($a,$b){
			echo $a+$b;
		}
	}
	//类可以实例化为对象
	//类 ->对象

	$xiaoming = new Person();	//类创建后,可以使用 new 运算符来实例化该类的对象:实例化对象为xiaoming

	$xiaoming->name="小明";		//调用name,但直接给其赋值
	$xiaoming->age="18";

	echo $xiaoming->name;
	echo "</br>";
	echo $xiaoming->age;

第三个例子展示$this的作用,方法里调用属性,要使用$this,否则会报错,这点需要理解局部变量和全局变量。

test2.php
<?php
	header("Content-type:text/html;charset=utf-8");
	//类:class
	class Person{			//定义一个类名为Person
		//属性 理解为变量
		//修饰符有三种 public protected private
		public $name="人";		//属性前面不加默认为private
		public $age="20";
		public $add="www";
		public $food="米饭";

		//方法 理解为函数
		public function eat(){	//方法前面不加默认为public
			echo $this->name."吃".$this->food;					
            //方法里调用属性,使用$this  直接输出echo $name."吃".$food;会报错	
		}
		public function sleep(){
			echo "睡觉";
		}
		public function add($a,$b){
			echo $a+$b;
		}
	}
	//类可以实例化为对象
	//类 ->对象

	$xiaoming = new Person();	//类创建后,可以使用 new 运算符来实例化该类的对象:

	$xiaoming->eat();

0x02 static 和const

静态(static)关键字

static声明类属性或方法为静态,就可以不实例化类而直接访问。可以在实例化的类对象中通过静态访问。

static可以修饰属性也可以修饰方法。修饰属性就为静态属性;修饰方法就为静态方法。

参考链接:PHP: 静态(static)关键字 - Manual

下面继续运行例子了解static的使用

<?php
	header("Content-type:text/html;charset=utf-8");
	//类:class
	class Person{			//定义一个类名为Person
		//属性 理解为变量
		//修饰符有三种 public protected private
		public $name="人";		//属性前面不加默认为private
		public $age="20";
		public $food="食物";
		static public $location="地球";   //当使用static修饰属性时,这个属性这时就不属于某个实例化对象而是属于这个类

		//方法 理解为函数
		public function eat(){	//方法前面不加默认为public
			echo "吃饭";
		}
		public function sleep(){
			echo "睡觉";
		}
		public function add($a,$b){
			echo $a+$b;
		}
		static public function sport(){		//在静态方法中只能调用静态属性,也就是说这里只能调用location
			//echo "运动";
			echo Person::$location="ww";	//调用location
		}
	}
	//类可以实例化为对象
	//类 ->对象

	$x = new Person();	//实例化对象x
	echo Person::$location;  	//要想使用需要用类调用,::用于连接
	//正常调用echo $x->location; 会报错的

	Person::sport();

类常量const

常量是一个定值,可以输出但不可以修改

参考链接:PHP 类常量 - const - PHP 基础教程 - 简单教程,简单编程

运用实例

<?php
	header("Content-type:text/html;charset=utf-8");
	//类:class
	class Person{			//定义一个类名为Person
		//属性 理解为变量
		//修饰符有三种 public protected private
		const PI=3.1415926;		//定义一个常量PI
		public $name="人";		//属性前面不加默认为private
		public $age="20";
		public $food="食物";
		static public $location="地球";   //当使用static修饰属性时,这个属性这时就不属于某个实例化对象而是属于这个类

		//方法 理解为函数
		public function eat(){	//方法前面不加默认为public
			echo "吃饭";
		}
		public function sleep(){
			echo "睡觉";
		}
		public function add($a,$b){
			echo $a+$b;
		}
		static public function sport(){		//在静态方法中只能调用静态属性,也就是说这里只能调用location
			//echo "运动";
			echo Person::$location="ww";	//调用location
		}
		public function testConst(){		
			echo Person::PI;				//const也是用类调用,类比static
			//echo $a->testConst();   这样调用是错误的
		}
	}
	//类可以实例化为对象
	//类 ->对象

	$a = new Person();	//实例化对象x
	echo $a->testConst();	  
 
	//如果说想要修改PI的值,  Person::PI=3.153; 发现会报错,因为常量看可以输出,但不能修改
	

0x03 总结

通过学习类、属性、方法、实例化等名词含义及作用,掌握statci和const的区别,对OOP编程有一个初步了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值