您好,欢迎访问一九零五行业门户网

类中函数的参数能指定为类的属性吗

看到一个代码,说是类中的usbusb函数的参数之一可以是上面的usb这个接口作为参数,如图,没听说过php函数中的参数这么使用呢,道理何在?
回复讨论(解决方案) function useusb( usb $usb)
这个 usb 是类型声明,如果 $usb 不是 usb 类型的话,将会有语法错
function useusb( usb $usb)
这个 usb 是类型声明,如果 $usb 不是 usb 类型的话,将会有语法错
如果是这样,这真颠覆我对函数参数的理解,我的理解是,函数的参数就是一个变量,可以是任意值,并且没有类型的限制。 如果是颠覆了你的理解的话,那只能说明你的理解是有问题的
所以不是颠覆而应是增强了理解
比如 usb 类有一个 load 方法,而你
function useusb($usb) {
  $usb->load();
}
这样定义,这样调用 $obj->useusb('abc');
这就会在 $usb->load() 处出现 不存在 load 方法 的错误
于是你就需要在 $usb->load() 之前检查 $usb 是否是对象;是否存在 load 方法
而加上类型声明后,这个检查工作就由 php 解析器去完成了
你还是没有理解我所说的问题,我的意思是说函数useusb这个函数中的第一个参数usb是接口类usb,我不理解的是这里,怎么函数的参数会是一个类呢?我从很多教程中所看到的,函数中的参数就是一个可量,你定义为多少,一调用就出来了,可是这个类,是怎么回事呢,很多教程中压根没有提到。就是举一反三吧,感觉也不可思议。我不理解的是这里。
是你没有理解我说的意思!
函数的参数是以逗号分隔的
而 usb $usb 间有逗号吗?
显然是没有的,那么 usb $usb 就是一个参数了
你还是没有理解我所说的问题,我的意思是说函数useusb这个函数中的第一个参数usb是接口类usb,我不理解的是这里,怎么函数的参数会是一个类呢?我从很多教程中所看到的,函数中的参数就是一个可量,你定义为多少,一调用就出来了,可是这个类,是怎么回事呢,很多教程中压根没有提到。就是举一反三吧,感觉也不可思议。我不理解的是这里。
function use( usb $usb){}
$usb是由usb类实例化的一个对象指针
比如 $usb1 = usb(); $usb2 = usb(); use($usb1); use($usb2); 有点开窍了,通过二位的解答,正下有点领悟,不知我这样理解对不,函数中的()里就是一个表达式,这个表达式中可以用声明类的方法,比如我这个例子中usb $usb,是不是等价于$usb=new usb
这个例子中usb $usb
表示的是 $usb 必须是类 usb 或继承于 usb 的某个类的实例
这个例子中usb $usb
表示的是 $usb 必须是类 usb 或继承于 usb 的某个类的实例
$usb可以是usb的属性或方法吗??? 不可以,必须是实例
function use(usb $usb) { }
相当于
function use($usb) {
  if(! is_a($usb, 'usb')) return 'error';
}
其它类似信息

推荐信息