亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
1234下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 9445 | 回復(fù): 37
打印 上一主題 下一主題

請(qǐng)教一個(gè)關(guān)于參數(shù)傳遞的問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-10-23 09:39 |只看該作者 |倒序?yàn)g覽
50可用積分
如下有一個(gè) function :
function a()
{
 new myClass(...);
}


在這個(gè)函數(shù)內(nèi)部有一句實(shí)例化類(lèi)的語(yǔ)句,我想實(shí)現(xiàn)的是,如果我這樣 a( $a, $b ),那么里面的語(yǔ)句就相當(dāng)于 new myClass( $a, $b ),如果我 a( $a, $b, $c )那么里面就是 new myClass( $a, $b, $c ),如果 a() 那么里面也 new myClass()。以此類(lèi)推。

要一個(gè)比較好的解決辦法,把參數(shù)做成一個(gè)數(shù)組這樣感覺(jué)不舒服,代碼會(huì)變得不易閱讀。


結(jié)貼記:

無(wú)論是 eval 還是 create_function,執(zhí)行上來(lái)講,都不理想,完全面向?qū)ο蟮囊粋(gè)系統(tǒng),實(shí)例化的類(lèi)是很多的,每一個(gè)實(shí)例化都伴隨著這么一個(gè)過(guò)程,似乎有點(diǎn)恐怖。

除了給每一個(gè)類(lèi)增加一個(gè)創(chuàng)建單例用的static方法外,還沒(méi)有找到很好的替代辦法。

積分給寫(xiě)出 create_function 的那位同志,他的代碼執(zhí)行效率略高。

dz902在30樓提出的方式,實(shí)際上就是通過(guò)一個(gè)參數(shù)是否為一個(gè)特定值來(lái)判斷是否有具體的參數(shù)被傳入,雖然可以把值設(shè)定的很復(fù)雜,但是你仍然不能保證,傳入的不會(huì)出現(xiàn)巧合。還是不太喜歡在基礎(chǔ)框架上寫(xiě)上這樣的代碼。

謝謝大家參與討論,結(jié)貼。

[ 本帖最后由 a_coder 于 2007-10-23 18:01 編輯 ]

最佳答案

查看完整內(nèi)容

大汗,選為最佳后29樓的跳到2樓了,編輯一下,省得將來(lái)引起誤會(huì)。[ 本帖最后由 sunnyfun 于 2007-10-23 20:56 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2007-10-23 09:39 |只看該作者
大汗,選為最佳后29樓的跳到2樓了,編輯一下,省得將來(lái)引起誤會(huì)。
<?php

&nbsp;&nbsp;&nbsp;&nbsp;class Object {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $property;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function __construct( ) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$numargs = func_num_args();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "In class: Number of arguments: $numargs<br />\n";

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arg_list = func_get_args();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i = 0; $i < $numargs; $i++) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($numargs>0){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->property = $arg_list[0];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->property = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}


function a()
{
&nbsp;&nbsp;&nbsp;&nbsp;$numargs = func_num_args();
&nbsp;&nbsp;&nbsp;&nbsp;echo "Number of arguments: $numargs<br />\n";

&nbsp;&nbsp;&nbsp;&nbsp;$arg_list = func_get_args();
&nbsp;&nbsp;&nbsp;&nbsp;for ($i = 0; $i < $numargs; $i++) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;$arg =implode(",", $arg_list);
&nbsp;&nbsp;&nbsp;&nbsp;$myfunc ="return new Object($arg);";
&nbsp;&nbsp;&nbsp;&nbsp;$mynewfunc= create_function('', $myfunc);
&nbsp;&nbsp;&nbsp;&nbsp;$obj = $mynewfunc('');
&nbsp;&nbsp;&nbsp;&nbsp;echo $obj->property;
&nbsp;&nbsp;&nbsp;&nbsp;echo "<br /><br />\n";
}

a();
a(1, 2, 3);
a(1, 2, 3, 4);
?>


[ 本帖最后由 sunnyfun 于 2007-10-23 20:56 編輯 ]

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2007-10-23 10:14 |只看該作者

  1. <?php
  2. function foo()
  3. {
  4.     $numargs = func_num_args();
  5.     echo "Number of arguments: $numargs<br />\n";
  6.     if ($numargs >= 2) {
  7.         echo "Second argument is: " . func_get_arg(1) . "<br />\n";
  8.     }
  9.     $arg_list = func_get_args();
  10.     for ($i = 0; $i < $numargs; $i++) {
  11.         echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
  12.     }
  13. }

  14. foo(1, 2, 3);
  15. ?>
復(fù)制代碼


引用自手冊(cè)

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2007-10-23 10:14 |只看該作者
兩個(gè)方法:
1、數(shù)組。
2、做羊肉竄。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2007-10-23 10:20 |只看該作者
2樓的等于沒(méi)說(shuō),那些東西無(wú)法解決這個(gè)問(wèn)題,請(qǐng)看清楚問(wèn)題再說(shuō),手冊(cè)我讀的比你多。
3樓的說(shuō)數(shù)組,這個(gè)辦法是沒(méi)有辦法的笨辦法,代碼會(huì)變得很不易閱讀。至于你說(shuō)的羊肉串我不明白什么意思,是不是就是根據(jù)參數(shù)個(gè)數(shù)來(lái)判斷?那可累死了。代碼的自適應(yīng)能力也非常的弱了。


另外加一句,使用eval來(lái)解決這個(gè)問(wèn)題也不太好的。

[ 本帖最后由 a_coder 于 2007-10-23 10:22 編輯 ]

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2007-10-23 10:41 |只看該作者
原帖由 a_coder 于 2007-10-23 10:20 發(fā)表
2樓的等于沒(méi)說(shuō),那些東西無(wú)法解決這個(gè)問(wèn)題,請(qǐng)看清楚問(wèn)題再說(shuō),手冊(cè)我讀的比你多。

這么說(shuō)話,誰(shuí)敢給你出主意了啊

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2007-10-23 10:42 |只看該作者
原帖由 a_coder 于 2007-10-23 10:20 發(fā)表
2樓的等于沒(méi)說(shuō),那些東西無(wú)法解決這個(gè)問(wèn)題,請(qǐng)看清楚問(wèn)題再說(shuō),手冊(cè)我讀的比你多。
3樓的說(shuō)數(shù)組,這個(gè)辦法是沒(méi)有辦法的笨辦法,代碼會(huì)變得很不易閱讀。至于你說(shuō)的羊肉串我不明白什么意思,是不是就是根據(jù)參數(shù)個(gè) ...


搞毛,自己需求沒(méi)寫(xiě)清楚還怪別人,這叫重載。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2007-10-23 11:11 |只看該作者
重載?這叫重載?麻煩您解釋一下重載吧?磥(lái)我以前的理解全部錯(cuò)誤的

不看問(wèn)題自以為是,那手冊(cè)上的東西往這里砸,你不是浪費(fèi)我的帖子么?你要回的前提是看清楚問(wèn)題,對(duì)發(fā)貼人有一個(gè)最起碼的尊重。否則請(qǐng)閉尊口。

[ 本帖最后由 a_coder 于 2007-10-23 11:13 編輯 ]

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2007-10-23 11:22 |只看該作者
<?
$data = array('foo'=>'bar',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'baz'=>'boom',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'cow'=>'milk',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'php'=>'hypertext processor');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
$me=http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor

//這樣,你得到了一個(gè)羊肉竄,就是$me。把它傳到你想要傳到的地方。





class h
{
var $t;
function __construct($me)
{
$this->h($me);
}
function h($me)
{
//要使用的時(shí)候,還原成數(shù)組或其它的。老兄好像不喜數(shù)組,那就轉(zhuǎn)成獨(dú)立變量吧。

$a=explode('&',$me);
foreach($a as $b)
{
$c=explode('=',$b);
$k=$c[0];
$$k=$c[1];
}
$this->t=$foo;//拿一個(gè)出來(lái)測(cè)試

}
}

function hello($me)
{
$m=new h($me);
echo $m->t;
}

hello($me);
?>

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2007-10-23 11:37 |只看該作者
我指的你那問(wèn)題中
new myClass( $a, $b ), new myClass( $a, $b, $c ), new myClass()。以此類(lèi)推。


想實(shí)現(xiàn)的是重載。

可是你的問(wèn)題會(huì)讓人產(chǎn)生“想讓function a()支持多個(gè)參數(shù)”的歧義,樓主說(shuō)話老是唧唧歪歪的干嘛。

[ 本帖最后由 sunnyfun 于 2007-10-23 11:40 編輯 ]
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP