`

php 面向对象基础

    博客分类:
  • PHP
阅读更多

    传统开发方法存在的问题:


    1). 软件重用性差; 2). 软件可维护性差; 3). 无很好的扩展性

 

    面向对象的三大特点:封装,继承,多态

 

1. 面向对象入门

 

    类、属性、方法、构造函数、析构函数

<?php
	class MyPc{
		public $name="默认";
		var $price; 
		function MyPc($name=""){//如果不赋默认值,调用该方法时如果不传参数,会提示警告
			$this->name=$name;
		}
		//function __construct(){}//构造函数
	 	function vod() {
	  		return $this->name." 电脑";
	   	}
	   	function __destruct(){//析构函数
	   		echo $this->name."<br>";//后进先出的原则
	   	}
	   	function  test(){
	   		return "磨灭了<br>";
	   	}
	}

	echo MyPc::test();//类名直接访问方法,方法中不能有实例变量的引用
	$pc1 = new MyPc("我的");
	$pc2 = new MyPc("你的");

	echo $pc1->vod()."<br>";
	$pc1=null;//手动回收,自动调用__destruct()方法

	echo $pc2->vod()."<br>";
	$pc2=null;//手动回收,自动调用__destruct()方法
	
?>

 

2. 类的封装


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

 

    封装关键字
        public 表示全局,类内部外部子类都可以访问;
        protected表示受保护的,只有本类或子类或父类中可以访问;
        private表示私有的,只有本类内部可以使用;

<?php
//类的封装和应用
class MyPc{
	private $name;
	
	private $age;
	
	function __construct($name=""){
		return $this->name=$name;
	}
	
	function __get($name){
		return $this->name;
	}
	
	function __set($n,$v){
		if($v>100){
			$this->$n=$v;
		}
	}
	private function power(){
		return $this->name." 打开电源";
	}
	
	function ok(){
		return $this->power().",开机成功";
	}
}
	$pc1=new MyPc("电脑");
	$pc1->name=1000;//如果没有__set()方法,会报错
	$pc1->age=200;
	echo $pc1->name;//如果没有__get()方法,会报错
	
	echo $pc1->age;
//__get()和__set()方法
/*
问题: __get方法和__set方法在类中只能定义一次,如果有多个私有属性,如何指定对应的get和set方法

__get和__set方法只是用来得到和设置属性的值,如果有多个,就在方法体里一一设置就行了
*/
?>

 

3. 类继承、抽象、接口、多态

<?php
//PHP中使用extends进行单一继承
class Root{
	
	function root1(){
		return "Root print<br>";
	}
}

class Son extends Root{
	function root1(){//覆盖父类的方法,如果想访问父类的方法,可用  类名::方法名()来访问
		return "Root:".Root::root1()."in son's root";
	}
	function son1(){//此时可用$this变量来访问父类的方法
		return $this->root1()."Son print<br>";
	}
}

$p=new Son();
echo $p->son1();
echo $p->root1();

//抽象类
//php抽象类里必须有抽象方法,继承抽象类时必须实现所以的抽象方法
//java的抽象类里可以没有抽象方法
 abstract class A{
 	abstract function fun1();
 	abstract function fun2();
 	
 	function ok(){
 		
 	}
 }
 class B extends A{
 	function fun1(){
 		echo "func1";
 	}
 	function fun2(){
 		echo "func2";
 	}
 }

//接口
/*
 * 所需的关键字interface  implements
 * 用法和java同
 * 如果同时要继承和实现接口,先继承后接口,单继承多接口
 * */


//多态
/*运算符 :instanceof
 * 
 * */
 class C{}
 class D{}
 $a=new C;//new C的时候居然可以不需要()
 //echo $a;
 if($a instanceof C){
 	echo '<br>C';
 }
?>

 

4. 一些方法

 

    __tostring()、__call()、__clone()、__autoload()

<?php
//__tostring()方法,类似java的toString 方法
 
 //对象方法异常处理__call($funname,$arr_value)
 /*
  * 如果调用的方法不存在,会自动调用__call方法
  * __call方法主要用来调试和吸收错误
  * */
 
 //克隆对象的应用
 /*
  * 方法名 __clone()  
  * 关键字  clone
*/
 
 //自动载入对象的方法
 /*
  * 方法名 __autoload()
  * 该方法是在类以外单独的方法
  * */
 class my{
 	public $name="我的类";
 	
 	function __toString(){
 		return $this->name."tostring <br>";
 	}
 	function __call($methodname,$value){
 		echo "不存在的方法为:".$methodname."<br>";
 		echo "错误代码为:".print_r($value)."<br>";//参数值是以数组的形式传递,故用print_r打印
 	}
 	
 	function __destruct(){
 		echo "清理一个对象<br>";
 	}
 	function __clone(){//使用clone关键字克隆时会自动调用该方法
 		$this->name="克隆的值";
 	}
 }
 $p=new my();
 echo $p;
 $p->demo("test");//demo方法并不存在,会调用__call方法,如果没有__call方法会报错
 
 $b=clone $p;//克隆一个对象,执行完后,__destruct()会执行两次
 
 echo $b->name."<br>";
 
 function __autoload($class_name){
 	include($class_name.".php");
 }
 $al=new autoload();
 $al->autoloadtest();
 ?>

 

5. 常用的关键字

 

<?php
//类中的常用关键字
/*
 * final
 * 
 * 用来定义类和方法的一个重要关键字,
 * 当定义类的时候该类将不能被继承,当用来定义方法的时候该方法将不能被重载
 * 
 * self
 * 
 * 用来用类访问当前类中的内容的关键字,
 * 类似与$this关键字,但$this是需要类实例化以后才可以使用,self 可以直接访问当前类中的内部成员
 * 
 * 因为没有实例化类访问内部属性或者方法是没有意义的,所以self一般用来访问类中的:静态成员,常量,或者其他定义内容
 * self :: 类内部成员(属性或者方法) <==>类名 :: 类内部成员(属性或者方法)
 * 问题:self和this的区别
 * 
 * static
 * 用来定义类的静态属性或方法,可以在类未被实例化时使用
 * 静态属性单独占用内存而不会因创建多个对象时而导致同样的方法或者属性重复占用。
 * 
 * 静态方法内部禁止出现非静态内容(不能使用this关键字)
 * 
 * 静态成员的访问:
 * 类名称 : : 静态成员     
 * self  : : 静态成员
 * 
 * const
 * 
 * 用来定义类中的常量,类似PHP外部定义常量的关键字define();  
 * Const只能修饰类当中的成员属性!
 * 1、建议大写常量
 * 2、常量不使用$符号
 * 常量的访问:
 * 类名称 : : 常量     
 * self  : : 常量
 * */
?>

 

分享到:
评论

相关推荐

    php面向对象基础详解【星际争霸游戏案例】

    【PHP面向对象基础详解【星际争霸游戏案例】】 在编程领域,面向对象是一种重要的编程范式,它将现实世界中的实体抽象为类,通过类来描述对象的属性和行为。PHP自5.0版本开始全面支持面向对象编程,使得开发者能够...

    PHP面向对象 基础知识点汇总(代码+知识点+xmind思维导图)

    本资源提供了全面的PHP面向对象基础知识点,包括代码示例、知识点汇总以及Xmind思维导图,旨在帮助学习者快速理解和掌握这一关键概念。 1. **类与对象** - **类**:类是创建对象的模板,定义了一组属性(数据成员...

    php面向对象详细教程(完整版)

    本教程详细阐述了PHP的面向对象特性,包括PHP5面向对象初步,PHP5面向对象进阶,PHP5面向对象高级类特性,PHP5接口与多态,PHP5面向对象异常处理等5个章节。内容丰富,实例清晰,并有相关PHP设计模式的详细实例和...

    php面向对象初步入门教程pdf版

    总之,本教程将引导你逐步了解PHP面向对象编程的基础,同时涵盖与MySQL数据库的交互,为你的Web开发之旅打下坚实的基础。阅读《php面向对象初步入门教程pdf版》将帮助你快速掌握这些关键概念,并在实践中应用它们。

    php面向对象手册

    ### PHP面向对象手册知识点解析 #### 一、面向对象编程简介 面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式,它将数据和处理数据的方法捆绑在一起形成“对象”。OOP 的核心思想是通过...

    PHP5面向对象开发教程第一章-PHP5面向对象基础

    本教程将探讨PHP5中的面向对象基础,为后续的深入学习打下坚实的基础。 首先,我们需要理解面向对象编程的核心概念:类(Class)和对象(Object)。类是定义数据类型的一种模板,包含了属性(Variables)和方法...

    php面向对象(一) 初窥(php面向对象基础介绍)

    ### PHP面向对象基础知识点 #### 一、面向对象的基本概念 在PHP中,面向对象编程是一种重要的编程范式,它通过模拟现实世界中的实体来构建软件系统。面向对象编程的核心概念包括类、对象以及它们之间的关系。 - *...

    php面向对象教程简单易学

    ### PHP面向对象基础教程 #### 一、面向对象编程(OOP)概念 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和处理数据的方法组织在一起,形成“对象”。在OOP中,一切皆可视为对象...

    深入PHP面向对象模式与实践第2版

    《深入PHP面向对象模式与实践第2版》是一本专注于PHP面向对象编程的书籍,它不仅涉及到面向对象编程的基础知识,还深入讲解了面向对象设计模式以及如何在实际项目中应用这些模式。该书是对PHP开发者掌握面向对象技术...

    面向对象编程基础知识

    ### 面向对象编程基础知识 #### 面向对象编程概述 面向对象编程(Object-Oriented Programming,简称 OOP)是一种软件开发方法论,它通过将数据和操作数据的方法绑定在一起,即将抽象的数据类型定义为类(class)...

    深入PHP面向对象、模式与实践_第3版_高清PDF(附完整源码)

    本书首先从基础出发,详细介绍了PHP面向对象编程的基础概念,包括类、对象、封装、继承和多态等核心概念。通过深入理解这些概念,开发者可以构建更加模块化、易于维护的代码结构。 书中深入探讨了各种设计模式,这...

    实验PHP面向对象

    在进行PHP面向对象实验的过程中,首先需要掌握的核心概念是面向对象设计思想,这是理解面向对象编程(OOP)的基础。面向对象思想主要涉及对象、类、继承、封装和多态等概念,是通过类来实现的。类可以被看作是创建...

    php面向对象

    ### PHP面向对象基础知识点 #### 一、类与对象的概念 在PHP中,面向对象编程是一种编程范式,它将程序中的数据以及操作这些数据的方法组织在一起形成一个整体——类。类是创建对象的模板,它定义了一组相似的对象...

    基于PHP面向对象的自定义MVC框架高级项目开发高级视频教程

    #### 一、PHP面向对象基础 在深入探讨如何构建一个自定义的MVC框架之前,我们首先需要了解PHP中的面向对象编程(OOP)概念。面向对象编程是一种编程范式,它通过“对象”来组织代码结构,这些对象是数据(属性)和...

    php面向对象系列(完整)

    1. **PHP面向对象编程基础**: - 类(Class):PHP 5引入了完整的面向对象编程支持,类是创建对象的蓝图,定义了对象的状态(属性)和行为(方法)。 - 对象(Object):类的实例,具有类定义的属性和方法。 - ...

    面向对象设计 1 —— PHP5面向对象基础(基础部分)

    这篇博客“面向对象设计 1 —— PHP5面向对象基础(基础部分)”可能详细讲解了PHP5中面向对象的基础知识,包括类、对象、封装、继承和多态等核心概念。 1. 类与对象 在PHP5中,类是创建对象的模板,它定义了一组属性...

    php面向对象(分页)

    在PHP编程中,面向对象(Object-Oriented Programming, OOP)是一种强大的设计模式,它允许我们通过类和对象来组织和处理数据。本资源主要关注如何在PHP中使用面向对象的方法实现分页功能,这对于处理大量数据时提高...

    php简单面向对象的网站例子

    $news1 = new News("PHP面向对象教程", "这是一个关于PHP OOP的教程"); $news1-&gt;display(); ``` 这里,`$news1`就是一个`News`类的对象,我们通过调用其`display`方法来显示新闻。 面向对象的三大特性——继承、...

Global site tag (gtag.js) - Google Analytics