English 中文(简体)
为什么在PHP和Javascript中存在着可接受的参数?
原标题:Why are configuration arrays acceptable parameters in PHP and Javascript?

在其他大多数目标语言中,以定向语言。 授权每个职能都有一个单一的共同物体阵列,而不是在方法签名中逐个列出。 为什么这两个语文的多数民众框架都能接受和普遍使用这种语言?

是否除了希望有简明的方法签名之外还有其他理由?

我确实看到了这一好处——在添加新的任择参数时,该文稿可能保持不变。 但是, Java和购买力平价已经允许在其方法签名中采用任择参数。 如果说什么的话,它似乎像Java或另一个OO语言一样,会从中得益......但我很少看到这种情况。

什么?

最佳回答

主要原因是,这些特定语言根本不支持以相同功能名称订立多项公约。 页: 1

public function someFunc(SomeClass $some);
public function someFunc(AnotherClass $another);
public function someFunc(SomeClass $some, AnotherClass $another);

因此,你必须找到另一种方式,以创造更简单的方式,通过PHP,最终以<条码>(某些=“>”、$、另一 =“>$another)”的形式通过,因为这是唯一方便的方式。 在 Java文中,我们最后使用一些物体,这些物体为:someFunc(即:有些,另一个:thing})

问题回答

我认为,这些职能中有许多是在其接受的论据数量上 climb升的,10多个并非罕见。 即便是你有选择性的参数,你仍必须按顺序送交。

考虑这样的职能:

function myFunc(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13){
    //...
}

你只想使用第3和第11条论点。 页: 1

myFunc(null, null, null,  hello , null, null, null, null, null, null, null,  world );

难道要说你是公正的:

myFunc({
    a3 :  hello , 
    a11 :  world  
});

?

原因有几个。

第一,并非所有论点清单都有自然秩序。 如果只有使用个案才能提供第1和第6条论点,现在你必须填满4个违约地点。 Jage很好地说明了这一点。

第二是,很难记住必须提出论点的顺序。 如果你把一系列数字当作你的论据,那么它就不大可能知道什么数目意味着什么。 举例来说,请imagecopyresampled ($dest,$src, 0, 10, 0, 20, 100, 50, 30, 80)。 在该案中,组合阵列像陈词滥调。

鲁比也采用这一方法,甚至设计了一种更简明的合成物,专门用于使用海螺作为初步用途,截至Rub 1.9:

# old syntax
myFunc(:user =>  john , :password =>  password );

# new syntax
myFunc(user:  john , password:  password );

正在讨论的问题是,在这些语文中,你不能超负荷根据论点类型履行职责。 这导致有单一建筑商的复杂班级,这些建筑商可以有巨大的、不受欢迎的理由清单。 采用类似散射物来提供参数,就可以以直径而不是按类型进行堆积。

My only real problem with this practice is it becomes difficult to document your arguments: PHPDoc for variable-length arrays of arguments

您不以其他业务协调处语文看到这一点的最重要原因之一,是你可能指的是汇编的语文,如C++或Java。

汇编者负责在汇编时而不是执行期间确定你想要采用哪种方法,通常以签字为基础这样做,因此基本上必须以这种方式来做。 这也是如何用这些语文超负荷工作。

首先,这种技术对编码员来说非常简单。

他们不必记住你所申请的所有职能的所有参数。 守则变得更加可读和有力。

今后的任何发展、改进或改进都不会如此困难。 法典更加可维持。

但有一些陷阱。 例如,并不是每个民主选举学会都会给你一个完成这些职能及其参数的简单法典。

我认为,造成这种情况的有两个原因:

  1. Array s are very easy to create and manipulate, even with mixed types.
  2. PHP/JS programmers have often a non academic background and are less indoctrinated from languanges like Java and C++.




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.