php函数重写
㈠ php中 重载函数 __get() __set() _call作用及参数是什么
void __set ( string $name , mixed $value )
__set在对类内不可访问的成员赋值时被调用,$name是成员名,$value是赋的值
mixed __get ( string $name )
__get在对内类内不可访问的成员取值时被调用,$name是成员名
mixed __call ( string $name , array $arguments )
__call在对类内不可访问的方法调用时被调用,$name是方法名,$arguments是调用这个方法提供的参数
㈡ php 方法重写和多态的区别
重写是多态实现方法的一种,多态的实现方法包括但不局限于重写,二者不是并列关系!多态是一种思想,重写是一种方法!
换句话说,只会执行子类,不会执行父类。如果一定要执行父类,那么就要用到关键词parent。
㈢ PHP中能否在类内方法中重写类内属性
1、你的test方法里$this->abc = 使用$data执行一次查询操作,返回一个三维数组;
functiontest($data){
$this->abc=使用$data执行一次查询操作,返回一个三维数组;
return$this->abc;
}
functiontest2(){
$a=$this->test($data);
//或$a=$this->abc;属性变量已经改变,直接使用属性也可以
}
2、不使用属性变量,test方法直接返回数据,
functiontest($data){
return使用$data执行一次查询操作,返回一个三维数组;
}
functiontest2(){
$a=$this->test($data);
}
㈣ PHP方法重写
class B extends A{
public function test(){echo "这是test方法";}
}
㈤ php重定义函数怎么写
一,在没有私有成员时的一种权宜之策
PHP5 虽然有私有成员了,但这种习惯仍然有人在用,这实际上是不好的。而 js 里也有人这么区分公开和私有成员。
二,PHP 里有一种叫魔术方法的东西(扶额
这个我就不知道该怎么解释了,确实有用(某种程度上),也确实很丑,可读性很差。
㈥ php为什么不支持函数重载啊
php 作为一种弱类型语言,本身不能像强类型如java ,c++那样,直接的实现重载。不过可以通过一些方法,间接的实现重载。
使用一个统一的函数来实现重载。该方法要使用func_get_args()和func_num_args()方法。
<?php
function test1($name){
echo $name;
}
function test2($name,$age){
echo $name.$age;
}
function load(){
//返回输入的元素数目
$num=func_num_args();
//返回输入元素列表的数组形式
$arr=func_get_args();
if($num==1){
test1($arr[0]);
}else {
test2($arr[0],$arr[1]);
}
}
load("a");
echo "<br/>";
load("a","b");
?>
2.当对象试着调用不存在或者受权限限制的方法时,__call()方法会被自动调用,从而可以实现类型重载的效果。该方法是php5新增的方法。
<?php
class A{
//name :调用的方法名字。args:参数列表
function __call($name,$args){
$num=count($args);
if($num==1){
$this->test1($args[0]);
}
else {
$this->test2($args[0],$args[1]);
}
}
function test1($name){
echo $name;
}
function test2($name, $age){
echo $name." ".$age;
}
}
$a=new A();
$a->a("a");
echo "<br/>";
$a->a("a","b");
?>
㈦ php中如何实现函数重载呢
PHP本身不能函数重载的,不过你可以使用类中的__call的魔术方法来实现。该魔术方法接受两个参数,一个数方法的名称,一个是包含该方法参数的数组。当对一个类调用一个不可见的方法时(比如该方法是private或者根本没有这个方法)被触发调用。
㈧ php如何把函数作为变量用
wp很多函数全都是直接echo的,无法调用..
你可以查查wp还有什么其他的函数可以调用tag..
否则找到the_tags();这个函数,然后重写一个函数(不难,把echo改成return)
㈨ php子类能不能重写父类的private方法
不能 就算你重写了同名方法 这个方法和父类的同名方法完全没有任何关系
㈩ PHP面向对象,方法重写的问题
PHP面向对象中方法是不能重载的,
所谓的的方法重载就是:定义相同的方法名. 通过“参数个数”不同或者"参数的类型"不同,来访问相同方法名的不同方法。
所以你这种属于:通过“参数个数”不同,所以PHP中是不允许的。
完全可以采用 抽象类+类实现的方式实现多种不同情况的对象类。