导航:首页 > 编程语言 > php调用不存在的方法

php调用不存在的方法

发布时间:2023-06-02 04:21:37

‘壹’ php方法调用

<?php
//该例子是让大家知道,在php中如何定义一个方法,以及如何调用方法
//下面定义一个方法,这个方法很简单,就是处理2个数的相加问题
functionadd($number1,$number2){
$sum=$number1+$number2;
echo$sum;
}
//我们来调用add()方法
add(1,2);
/**
说明:
function这个关键字就是声明方法的。在这个关键字后面的add就是方法的名称,括号中的是参数。
也可以没有参数的。大括号内是方法体。里面是该方法的逻辑。
下面的add(1,2)就是调用add这个方法。如果没有调用方法将不会被执行的。
*/
//定义一个带有返回值的方法
functionre($n1,$n2){
$sum=$n1+$n2;
return$sum;
}
//调用有返回值的方法,调用这个方法,值是5。
echore(2,3);
?>

‘贰’ PHP怎么调用其他类的方法

在Java的调用方法是import,而在PHP中没有import这个函数,一般PHP中调用其他类是用到require(),具体PHP调用其他类的方法如下:

1、首先应该先有一个文件名为tool.php的文件,在文件中声明一个类。

(2)php调用不存在的方法扩展阅读:

类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:

<?php

class Cart { var $items; // 购物车中的物品

// 将 $num 个 $artnr 物品加入购物车

function add_item($artnr, $num) {

$this->items[$artnr] += $num;

} // 将 $num 个 $artnr 物品从购物车中取出

function remove_item($artnr, $num) {

if ($this->items[$artnr] > $num) {

$this->items[$artnr] -= $num; return true;

} elseif

($this->items[$artnr] == $num) {

unset($this->items[$artnr]); return true;

} else {

return false; }

}

} ?>

上面的例子定义了一个 Cart 类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。

‘叁’ php中怎么使用call

PHP中的一个魔坦戚术方法, 作用羡简是当你调用一个不存在的方法时自动调用的方法:

<?php


header('content-type:text/html;charset=utf-8');


classTest{

publicfunction__construct(){
//
}

publicfunction__call($func,$args){
/**
*@func所调用的方法名称
*
*@args调用时所携带参数
让派陵*
**/
}

}

$var=newTest();

$var->test('a','b','c');

‘肆’ php中的类是单继承,那要有多个类继承怎么办

PHP没有多继承的特性。即使是一门支持多继承的编程语言,我们也很少会使用这个特性。在大多数人看来,多继承不是一种好的设计方法。想要给某个类添加额外的特性,不一定要使用继承。这里我提供一种模拟多继承的方法以供参考。


PHP有一个魔术方法,叫做__call。当你调用一个不存在的方法时,这个方法会被自动调用。这时,我们就有机会将调用重定向到一个存在的方法。继承多个父类的子类,寻找方法的过程一般是这样的:

本身的方法 -> 父类1的方法 -> 父类2的方法...


模拟过程大致是这样:将各个父类实例化,然后作为子类的属性。这些父类提供一些公有的方法。当子类拥有某方法时,__call()函数不会被调用。这相当于“覆盖”了父类的方法。当调用了不存在的方法时,通过__call()方法依次从父类中寻找可以调用的方法。虽然这不是完备的多继承,但可以帮助我们解决问题。


<?php
classParent1{
functionmethod1(){}
functionmethod2(){}
}
classParent2{
functionmethod3(){}
functionmethod4(){}
}
classChild{
protected$_parents=array();
publicfunctionChild(array$parents=array()){
$_parents=$parents;
}

publicfunction__call($method,$args){
//从“父类"中查找方法
foreach($this->_parentsas$p){
if(is_callable(array($p,$method))){
returncall_user_func_array(array($p,$method),$args);
}
}
//恢复默认的行为,会引发一个方法不存在的致命错误
returncall_user_func_array(array($this,$method),$args);
}
}
$obj=newChild(array(newParent1(),newParent2()));
$obj->method1();
$obj->method3();

这里没有涉及属性的继承,但实现起来并不困难。可以通过__set()和__get()魔术方法来模拟属性的继承。请你动手实践。

‘伍’ php对象访问不存在的类属性

使用get()和set()而不使用public的成员变量,是因为我们设计类的时候要遵循这样的原则:
提供类的人要尽量将类中有什么隐藏起来,只告诉使用者你能做什么
使用类的人不关心你的类中有什么,只关心类提供了什么功能
所以设计类的时候要尽量不提供public的成员变量,最好一个都没有,只提供接口
这条原则其实不仅是代码规范的问题,放到工作中,这就是多项目组或多部门之间合作的准则
这条原则也绝对不是某个独自编码的程序狼一拍脑袋就想出来,这是经历过有组织开发过工作的程序猿才能设计出来的。
————————————————————————————————————————————————————————————
这个问题其实很简单,比如
setAge(int age){
if(age<1||age>120)
throw new Exception(" 你输入的年龄不合法");
}else{
this.age=age;
}

这个是public变量做不到的,安全是其中一个原因,另外楼主你要是学过Hiberante和Spring的话,就会知道
一些类的变量,即使是public的,也必须写上set方法,否则就出错,框架设计的时候就这么要求的

所以别人都这么做的时候,你这么做只会有好处而不会有坏处,这就是标准

阅读全文

与php调用不存在的方法相关的资料

热点内容
高三倒计时缓解压力 浏览:619
一捏就变形的解压玩具怎么折 浏览:196
易融贷app借钱怎么 浏览:939
单片机侧重点 浏览:867
江苏惠普服务器虚拟化设计云主机 浏览:647
在欧拉app好猫充电桩怎么申请 浏览:449
反编译代码教程 浏览:798
linuxio阻塞 浏览:973
8脚单片机pic 浏览:821
如何看彩色涂鸦遮住的字安卓 浏览:688
摆渡机器人编程 浏览:654
软程序员着装 浏览:139
宝鸡云存储服务器 浏览:668
推荐超解压游戏无广告 浏览:634
大华服务器怎么添加门禁 浏览:784
战地服务器60hz什么意思 浏览:760
成高级程序员学什么 浏览:501
阿里云接入备案后退掉服务器 浏览:928
ne40e命令 浏览:85
安卓输入法使用什么编码 浏览:184