PHPc 函数 参数 指定如何只传指定的参数

php 类的方法的参数是类名怎么理解? - 知乎3被浏览725分享邀请回答$a=new Test(111);
$a-&baz($a);
但是如果换成如下代码:class B{}
$b=new B();
$a=new Test(111);
$a-&baz($b);
就会报错:Catchable fatal error:
Argument 1 passed to Test::baz() must be an instance of Test, instance of B given 简单意思就是:传递参数必须是实例化Test,你传B的对象是不对的。2添加评论分享收藏感谢收起PHP7 dirname()函数增加向上层数参数
PHP 5及更早版本中dirname()只接受一个参数,返回给定路径的上层目录,
PHP7 dirname()接受第2个参数来指定向上层级,方便向上更多层,
PHP7中 echo dirname('/foo/bar/baz/', 2); 将会输出 /foo
PHP7以前的版本中只能通过套用多层dirname()函数来获取向上多层目录的路径,
PHP7中的 echo dirname('/foo/bar/baz/', 2); 在 PHP 5及更早版本中只能写作 echo dirname(dirname('/foo/bar/baz'));
PHP7比PHP5方便了不少,也更人性化。
width:100%">
来自手机版
width:100%">
E-mail: OHCC@</温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
海阔凭鱼跃,天高任鸟飞.
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4245)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'PHP 中自定义函数参数赋默认值',
blogAbstract:'\n\t\t\tphp自定义函数接受参数的时候可以直接给赋默认值\nfunction TestStr($str)\n{\nreturn $str.\"是一个字符串\";\n}\n\necho TestStr(\"abcdef\").\"&/br&\";\n上面这个自定义函数接受一个参数,如果我们调用的时候 TestStr() ;不给参数会是什么情况呢?\n直接报错:Warning: Missing argument 1 for TestStr()\n所以开发的过程中为了避免上面的错误我们一般要在自定义函数的时候给参数赋默认值,如下\nfunction TestStr2($str=\"kkkkk\")',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:2,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'海阔凭鱼跃,天高任鸟飞.',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
可以只传$a和$c吗
function __construct(){
$this-&f(1,,1);//会报错
function f($a, $b = 'hello', $c)
if($a) echo $a;
if($b) echo $b;
if($c) echo $c;
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
再改不了f()方法的情况下,可以加个方法来实现
public function __construct()
$this-&_f(1, 1);
public function f($a, $b = 'hello', $c)
if($a) echo $a;
if($b) echo $b;
if($c) echo $c;
public function _f()
$input = func_get_args();
$arguments = [];
$reflection = new ReflectionMethod($this, 'f');
foreach ($reflection-&getParameters()
as $parameter) {
$arguments[] = $parameter-&isDefaultValueAvailable() ?
$parameter-&getDefaultValue() :
array_shift($input);
return call_user_func_array([$this, 'f'], $arguments);
$c = new C();
_f()方法接收到的参数,会依次传值给f()方法中没有默认值的参数。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
带默认值的函数参数应该放到最后.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
把$b放在最后一个参数
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以改函数我也不用上来提问了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果代码你无法修改,那么这道题基本无解。
参数默认值就是当你没有实参的时候才起作用,这里放在第二个位置,除非你传的也是hello,否则,怎么样都会替换,如果你直接传f(1),那么因为第三个形参没有实参,还是会一样报错
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果你已经定义了该函数有不想改源码,这样调用 f(1,'hello', 2)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
既然你的 b 有默认值了, 你可以再传一遍默认值
function __construct(){
$this-&f(1,'hello',1);//
function __construct(){
$this-&f(1,1);//会报错
function f($a, $c, $b = 'hello')
if($a) echo $a;
if($b) echo $b;
if($c) echo $c;
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:

我要回帖

更多关于 php 函数参数指定类型 的文章

 

随机推荐