PHP面向对象
来源:互联网 发布:航天信息a3软件下载 编辑:程序博客网 时间:2024/05/20 13:38
<?php
//封装 __set() __get() __isset() __unset()
//__get()函数==>表示调用私有属性,如果是访问一般成员属性则不会调用该方法
/*class Person{
private $age;
function __get($var){
echo "哈哈哈".$var;//var代表被调用的变量
return $this->$var;
}
}
$p=new Person();
echo $p->age;
class Person{
private $name;
private $age;
function __get($var){
if($var=="name")
return $this->name;
if($var=="age")
return $this->age;
}
function __set($var,$value){
if($var=="name")
return $this->name=$value;
if($var=="age")
return $this->age=$value;
}
}
class Student extends Person{
function Say($avr){
echo $this->name."说".$avr;
}
}
$s=new Student();
$s->__set("name","张");
$s->Say("哈哈哈哈");
//Static属性==>本类名调用可以使用self,但在外部还得用类名调用
class person{
var $name;
static $country="中国";
function Say(){
echo "我是".self::$country."人";//person::$country
}
}
$p=new person();
person::$country="外星";
$p->Say();
//static方法 以下俩种方法都可以调用静态方法
class person{
var $name;
static $country="中国";
function Say(){
echo "我是".self::$country."人";
}
}
person::Say();//推荐使用
$p=new person();
$p->Say();
//const 常量修饰符
class person{
var $name="我";
const COUNTRY="中国";//常量无法更改值
function Say(){
echo "我是".self::COUNTRY."人";
}
}
person::Say();
//__tostring()函数==>被定义的时候必须返回一个字符串的值
class person{
var $name="我";
function __toString(){
return "这是一个对象类型,无法直接输出";
}
}
$p=new person();
echo $p;
//__clone()函数==>克隆出一个新的对象,这两个对象的内容一样,但在堆中的地址不一样
class person{
var $name="我";
function __Clone(){
$this->name="是clone出来的副本";
}
}
$p=new person();
$e=new person();
$e=clone $p;
echo $p->name;
echo $e->name;
//__call()函数==>可以避免程序崩溃,只输出一个提示内容
class person{
var $name="我";
function __call($funname,$args){//第一个参数为调用的方法名。第二个参数为调用方法时传递的参数。
echo $funname."方法不存在<br>";
print_r($args);
}
}
$p=new person();
$p->fun(1,2,3);
echo "<br>程序未崩溃";
//抽象方法,一个类里面有抽象方法就是抽象类,抽象类不能被实例化,只能被继承实现
abstract class Demo{
abstract function fun1();
function fun2(){
echo "哈哈哈";
}
}
class Test extends Demo{
function fun1(){
echo "覆盖抽象方法";
}
}
//Test::fun1();
$t=new Test();
$t->fun1();
//接口是一种特殊的抽象类。
//所有的成员属性必须是常量,所有的方法都是抽象的,所有的成员都必须是public
class Demo{
}
interface lone{
const B="hhhh";
function fun();
}
class one extends Demo implements lone{
function fun(){
echo "哈哈哈哈";
}
}
//封装 __set() __get() __isset() __unset()
//__get()函数==>表示调用私有属性,如果是访问一般成员属性则不会调用该方法
/*class Person{
private $age;
function __get($var){
echo "哈哈哈".$var;//var代表被调用的变量
return $this->$var;
}
}
$p=new Person();
echo $p->age;
class Person{
private $name;
private $age;
function __get($var){
if($var=="name")
return $this->name;
if($var=="age")
return $this->age;
}
function __set($var,$value){
if($var=="name")
return $this->name=$value;
if($var=="age")
return $this->age=$value;
}
}
class Student extends Person{
function Say($avr){
echo $this->name."说".$avr;
}
}
$s=new Student();
$s->__set("name","张");
$s->Say("哈哈哈哈");
//Static属性==>本类名调用可以使用self,但在外部还得用类名调用
class person{
var $name;
static $country="中国";
function Say(){
echo "我是".self::$country."人";//person::$country
}
}
$p=new person();
person::$country="外星";
$p->Say();
//static方法 以下俩种方法都可以调用静态方法
class person{
var $name;
static $country="中国";
function Say(){
echo "我是".self::$country."人";
}
}
person::Say();//推荐使用
$p=new person();
$p->Say();
//const 常量修饰符
class person{
var $name="我";
const COUNTRY="中国";//常量无法更改值
function Say(){
echo "我是".self::COUNTRY."人";
}
}
person::Say();
//__tostring()函数==>被定义的时候必须返回一个字符串的值
class person{
var $name="我";
function __toString(){
return "这是一个对象类型,无法直接输出";
}
}
$p=new person();
echo $p;
//__clone()函数==>克隆出一个新的对象,这两个对象的内容一样,但在堆中的地址不一样
class person{
var $name="我";
function __Clone(){
$this->name="是clone出来的副本";
}
}
$p=new person();
$e=new person();
$e=clone $p;
echo $p->name;
echo $e->name;
//__call()函数==>可以避免程序崩溃,只输出一个提示内容
class person{
var $name="我";
function __call($funname,$args){//第一个参数为调用的方法名。第二个参数为调用方法时传递的参数。
echo $funname."方法不存在<br>";
print_r($args);
}
}
$p=new person();
$p->fun(1,2,3);
echo "<br>程序未崩溃";
//抽象方法,一个类里面有抽象方法就是抽象类,抽象类不能被实例化,只能被继承实现
abstract class Demo{
abstract function fun1();
function fun2(){
echo "哈哈哈";
}
}
class Test extends Demo{
function fun1(){
echo "覆盖抽象方法";
}
}
//Test::fun1();
$t=new Test();
$t->fun1();
//接口是一种特殊的抽象类。
//所有的成员属性必须是常量,所有的方法都是抽象的,所有的成员都必须是public
class Demo{
}
interface lone{
const B="hhhh";
function fun();
}
class one extends Demo implements lone{
function fun(){
echo "哈哈哈哈";
}
}
one::fun();*/
0 0
- 【面向对象】php面向对象
- php面向对象--php面向对象ppt
- PHP面向对象精要
- PHP 面向对象编程
- PHP面向对象编程
- PHP 面向对象技术
- php 面向对象
- PHP面向对象编程
- Php面向对象01
- PHP面向对象笔记
- PHP面向对象v1:
- php 面向对象学习
- PHP-面向对象-OOP2
- PHP-面向对象-OOP3
- PHP-面向对象-OOP4
- PHP-面向对象-OOP5
- PHP-面向对象-OOP6
- PHP面向对象技术
- python数据结构学习笔记-2016-11-11-01-递归
- 在mfc中利用opencv打开摄像头并显示在窗口上
- 不带表头节点的循环单向链表
- 【数据结构与算法】选择排序
- 适用于计算机学院同学的作业目录管理系统
- PHP面向对象
- 网站重构
- Iframe详解
- C++ 中报LINK:fatal error LNK1104 :无法打开文件XXX.lib
- 在IDEA下,使用maven的mybatis-generator-maven-plugin插件自动生成实体类
- 使用百度音乐盒API接口实现音乐播放器
- Android-CheckBox
- Rocket League Daolao自制飞行教程
- bzoj 2738: 矩阵乘法 cdq分治+二维树状数组