草庐IT

外参数

全部标签

PHP 接口(interface)实现拒绝参数的子类

考虑一下:classA{}classBextendsA{}interfaceI{//expectsobjectinstanceofAfunctiondoSomething(A$a);}classCimplementsI{//fails????functiondoSomething(B$b){}}在我的概念中,上面应该工作,但它不作为php拒绝要求第一个参数与接口(interface)(I)中定义的类型(A)完全相同的实现。由于B是A的子类,所以我看不出有什么问题。我在这里遗漏了什么吗? 最佳答案 classCimplementsI意

php - 有很多参数的函数是不是不好的形式?还有什么选择?

我有一个查询数据库的搜索功能,有大约15个可选参数。显然这并不漂亮,调用它有点乱。PHP不允许重载方法,所以我一直在创建巨大的函数签名。我在其他地方看到了诸如创建参数类之类的建议:Disadvantagesofusingalotofparameters但这似乎太沉重了。我可以传入一个关联数组,但是虽然这减少了参数的数量,但我认为它不太容易遵循,因为没有内置文档说明数组中应该存在哪些键。有没有其他方法可以优雅地处理这个问题?通常在其他语言中,我会有一个非常丑陋的private方法,它最多接受十几个参数,然后创建同名的public方法,它接受这些参数的一个子集,并且内部调用私有(priva

php - Codeigniter 将参数传递给函数

我是OOP的新手,在理解它背后的结构时遇到了一些困难。我在Codeigniter(模板)中创建了一个库,我在加载它时传递了一些参数,但我想将这些参数传递给库的函数。';print_r($params);echo'';//thesearetheparametersIneed.I'veprintedthemandeverythingseemsfine}publicfunctionsome_function(){//Ineedtheaboveparametershere}} 最佳答案 试试这个:classTemplate{//Setsom

php - 如何将数组转换为方法的参数?

我需要将params(如:'param1'、'param2'、'param3')传递给方法...但我有参数数组(比如:array('param1','param2','param3'))。如何将数组转换为参数?functionfoo(array$params){bar(//Hereshouldbeinsertedparamsnotarray.);} 最佳答案 使用函数call_user_func_array.例如:call_user_func_array('bar',$params);

php - PHP 函数参数前的数组关键字

我看到一个这样声明的函数:publicstaticfunctionfactory($file=null,array$data=null,$auto_encode=null)如果你想看真正的类,请从aforkoffuelphpparserpackage转到这个view.php类在github上。我的问题是,array关键字在array$data=null中意味着什么? 最佳答案 这是PHP5'stypehinting的示例.参数$data应该是一个数组。可以将方法参数提示为object或array类型。如果是对象,可以指定类名作为hi

php - DateTime::diff(DateTime [, bool absolute = false]) 中的绝对参数有什么作用

这是示例代码$c=newDateTime();$o=clone$c;$o->modify('-60days');$diff=$c->diff($o);$diff2=$c->diff($o,TRUE);var_dump($diff,$diff2);哪些输出object(DateInterval)#3(8){["y"]=>int(0),["m"]=>int(1),["d"]=>int(29),["h"]=>int(0),["i"]=>int(0),["s"]=>int(0),["invert"]=>int(1),["days"]=>int(60)}object(DateInterval)#

php - 为什么 preg_match_all 强制我提供第三个可选参数?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在计算$text中一些特殊字符的数量(如欧元符号),使用preg_match_all和这个正则表达式:preg_match_all('/[\[|\]|€\{|}|\\|\^|\||~]/u',$text);出于某种奇怪的原因,PHP要求我提供第三个参数。但根据documentationofpreg_match_all它应该是可选的:Warning:p

php - 如何包装接受无限数量参数的函数

这个问题在这里已经有了答案:HowtopassvariablenumberofargumentstoaPHPfunction(10个答案)关闭8年前。我想包装一个接受无限数量参数的现有函数,例如这是现有的功能:functionT(){$args=func_num_args();//Dostuffwitharguments.}我现在想包装它,例如/**Thisfunctionshallalsotakeunlimitedarguments,*andjustpassthemontoT().*/functionmyT(){//TODO:Takeallargumentsandpassthemon

php - 表单验证期间具有多个参数的 Codeigniter 中的回调函数

在Codeigniter中:这是我用于验证的回调函数:publicfunctionhas_match($password,$username){if(0){//userexistsreturntrue;}else{$this->form_validation->set_message('has_match','InvalidUsername/passwordentered'.$password.''.$username);returnfalse;}}验证规则如下:$this->form_validation->set_rules('username','Username','requi

php - 使用链式方法和参数模拟调用

我正在学习如何使用模拟来运行一些单元测试,但我不确定如何模拟我的数据库类。它由单独的方法组成,可以像这两个示例一样链接起来:$db->select('someTblName',['fieldName'])->where('fieldName','someValue')->runQuery()->fetch();//returnsarrayornull另一种用法可能是这样的:$db->select('someTblName')->where('fieldName','someValue')->where('fieldName',array('>=','someValue')->runQu