(1) __clone方法在一个对象赋值给另外的一个对象的时候自动调用

<?php

class A
{
	public $a = "aa";
	public $b = 10;
	function __clone()
	{
		$this->a = "bb";
		$this->b = 2;
	}
	function __toString()
	{
		return $this->a."{$this->b}";
	}
}
$a= new A();
$b = clone $a;
echo $b; //输出 bb2

  

(2)__call 当调用的类成员函数不存在的时候自动调用

<?php

class A
{
	public $a = "aa";
	public $b = 10;
	function __clone()
	{
		$this->a = "bb";
		$this->b = 2;
	}
	function __toString()
	{
		return $this->a."{$this->b}";
	}
	function __call($method,$args)
	{
		echo "调用的方法{$method}()不存在,参数是:";
		print_r($args);;

	}
}
$a= new A();
$a->aa(1,2);

如果是静态方法,会自动调用__callStatic函数

php的__clone __call的更多相关文章

  1. PHP面向对象的程序设计一些简单的概念

    一.面向对象的概述    数组和对象,都属于PHP中的复合类型(一个变量可以存储多个单元) 对象比数组更强大,不仅可以存储多个数据,还可以将函数存在对象中 对象的三大特性:封装,继承,多态 面向对象编 ...

  2. 学习PHP时的一些总结(二)

    类中的构造方法和析构方法: 构造方法是对象创建完成后第一个被对象自动调用的方法.析构方法是对象在销毁之前最后一个被对象自动调用的方法. 如果没有显示的声明构造方法,类中都会默认存在一个没有参数列表并且 ...

  3. (58)PHP开发

    LAMP 0.使用include和require命令来包含外部PHP文件. 使用include_once命令,但是include和include_once命令相比的不足就是这两个命令并不关心请求的文件 ...

  4. PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload

    1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...

  5. PHP5中__call、__get、__set、__clone、__sleep、__wakeup的用法

    __construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__w ...

  6. 013对象—— __clone __toString __call

    <?php /** * */ //__clone()方法对一个对象实例进行的浅复制,对象内的基本数值类型进行的是传值复制 /*class a { public $uname; public $n ...

  7. PHP中的魔术方法总结:__construct,__destruct ,__call,__callStatic,__get,__set,__isset, __unset ,__sleep,__wakeup,__toString,__set_state,__clone,__autoload

    1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ...

  8. php对象: __clone, __toString, __call,__isset, __unset, __sleep, __wakeup,

    __clone: 克隆对象,自动完成操作   clone()  __toString:  return返回字符串  __call: 当调用不存在的函数时,自动执行该方法,并返回相关值 __isset: ...

  9. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr

    PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...

随机推荐

  1. Tomcat安装配置

    Tomcat安装配置 很久没有通过博客对学习所得进行记录了. 现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取 ...

  2. linux编程中接收主函数返回值以及错误码提示

    程序A创建子进程,并调用进程B,根据不调用的不同情况,最后显示结果不同. #include <stdio.h> #include <unistd.h> #include < ...

  3. 移动端上传图片iphone图片旋转以及服务端处理方法

    判断是否需要旋转 /**             *iphone判断图片方向,是否需要旋转图片             */            if(strpos($_SERVER['HTTP_U ...

  4. Intellij 打开就闪退或关闭

    找到安装目录的bin目录,搜索vmoptions可以看到两个文件, idea.exe.vmoptions    idea64.exe.vmoptions 这两个文件就是IDEA的一些配置文件,带64位 ...

  5. 在web.xml注册applicationContext.xml配置文件

    概要: Spring配置文件是集成了Spring框架的项目的核心,引擎的开始是:容器先是加载web.xml,接着是applicationContext.xml在web.xml里的注册.以下我们将介绍a ...

  6. javascript学习内容--object.style.display="value" value值为“”none“隐藏”或 "block"显示

    <head> var mychar=document.getElementById("con"); function hidden(){ mychar.style.di ...

  7. 使用JDBC获取Oracle连接时报错

    The Network Adapter could not establish the connection       网络适配器不能创建连接 作为初学者的来说,这个问题让我找了好多次,每次重新开启 ...

  8. spark 安装

    Spark 集群安装 1.上传tar包,解压tar包 tar -zxvf spark-2.0.0-bin-hadoop2.6.tgz 2.修改配置文件(这是yarn模式) 进入 spark/conf ...

  9. MySQL 数据库的导入 导出

    window下 1.导出整个数据库 mysqldump -u root -p smart_anju > Mysmart_anju.sql 2.导出一个表 mysqldump -u root -p ...

  10. JavaWeb前端:JQuery

    Jquery基本概念 什么是Jquery Jquery是一个开源的,集成了Javascript,CSS,DOM,AJAX的前端框架:它诞生于2006年,最初是为了简化JavaScript开发而产生的, ...