数组换位置一.介绍 PHP(外文名:PHP: Hyperte(22)
判断是否存在:isset(对象->属性;) ===>自动调用类中的__isset()方法
销毁:unset(对象->属性;) ===>自动调用类中的__unset()方法
<?php
class C1{
public $v1 = 1;
public $propArr = array();
function __get($propName){
if(isset($this->propArr[$propName])){
return $this->propArr[$propName];
}
return "不存在的属性 $propName";
}
function __set($propName,$value){
$this->propArr[$propName] = $value;
}
function __isset($propName){
if(isset($this->propArr[$propName])){
return true;
}
return false;
}
function __unset($propName){
unset($this->propArr[$propName]);
}
}
$obj = new C1();
$obj->v2 = 123;
echo $obj->v2;//123
echo isset($obj->v2);//1
unset($obj->v2);
当使用一个对象调用一个不存在的普通方法的时候,会自动去调用预先定义好的“__call”方法。
<?php
class C1{
function f1(){
echo ‘f1‘;
}
function f2($v){
echo "f2 $v";
}
function __call($name, $array){
$count = count($array);
if($count == 0){
$this->f1();
}elseif($count == 1){
$this->f2($array[0]);
}
}
}
$obj = new C1();
$obj->ff();
$obj->ff("123");
接口中只有两类最简单特性信息:(没有普通方法)
接口常量:其实就是常量
抽象方法:只有方法名,没有方法体
接口可以看作是抽象类的更高层面的抽象规范,不考虑接口常量的话,那么就相当于之规定了下级类要做什么,至于怎么就,没有规定。
接口可以实现“多继承”(多实现),而类不行。
一个类只能继承一个父类,但可以实现多个“上级接口”,语法形式:
class 类A extends 类B implements 接口1,接口2,... {...}
一个接口同样可以继承另一个接口(也是单继承):
interface 接口1 extends 接口2{...}
<?php
interface I1{
const V1 = 1;
function f1();
}
interface I2 extends I1{
const V2 = 2;
function f2();
}
class C1 implements I1,I2{
public function __construct(){
echo self::V1;
echo self::V2;
}
function f1(){}
function f2(){}
}
$o1 = new C1();
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-22.html
http://www.jiaoanw.com/
true
教案网
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-22.html
report
1815
判断是否存在:isset(对象-属性;) ===自动调用类中的__isset()方法 销毁:unset(对象-属性;) ===自动调用类中的__unset()方法 ?phpclass C1{ public $v1 = 1; public $propArr
要让自己的生活不一样才好