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

Chinaunix

標(biāo)題: 請(qǐng)教一個(gè)關(guān)于參數(shù)傳遞的問(wèn)題 [打印本頁(yè)]

作者: a_coder    時(shí)間: 2007-10-23 09:39
標(biāo)題: 請(qǐng)教一個(gè)關(guān)于參數(shù)傳遞的問(wèn)題
如下有一個(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 編輯 ]
作者: sunnyfun    時(shí)間: 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 編輯 ]
作者: sunnyfun    時(shí)間: 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è)
作者: kee212    時(shí)間: 2007-10-23 10:14
兩個(gè)方法:
1、數(shù)組。
2、做羊肉竄。
作者: a_coder    時(shí)間: 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 編輯 ]
作者: leicc    時(shí)間: 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ō)話(huà),誰(shuí)敢給你出主意了啊
作者: sunnyfun    時(shí)間: 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ě)清楚還怪別人,這叫重載。
作者: a_coder    時(shí)間: 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 編輯 ]
作者: kee212    時(shí)間: 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);
?>

作者: sunnyfun    時(shí)間: 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ō)話(huà)老是唧唧歪歪的干嘛。

[ 本帖最后由 sunnyfun 于 2007-10-23 11:40 編輯 ]
作者: sunnyfun    時(shí)間: 2007-10-23 11:43
不知道樓主為什么這么排斥數(shù)組,在php5中用__call實(shí)現(xiàn)重載難道不方便嗎
作者: a_coder    時(shí)間: 2007-10-23 11:48
8樓的辦法,有點(diǎn)復(fù)雜,一個(gè)比較簡(jiǎn)單的辦法是把 myClass 不定義 PHP 默認(rèn)的構(gòu)造函數(shù) __construct,定義一個(gè)自定義的具有構(gòu)造函數(shù)相同作用的方法 init,然后在func中

$myClass = new myClass;
call_user_func_array( array(&$myClass, 'init'), array( $arg1, $arg2, $arg3, ... ));

這樣問(wèn)題可以解決,但是一個(gè)非常要命的地方是,如果在其他地方簡(jiǎn)單的使用 new 來(lái)實(shí)例化就不行了,必須緊跟一個(gè)init方法,這樣用起來(lái)不是十分方便。


sunnyfun,你仔細(xì)看題目,都能明白我的本意不是 function a(),重點(diǎn)是在里面的 new myClass 上面。支持多個(gè)參數(shù)很容易,但是如果 myClass 的構(gòu)造函數(shù)定義了具體的參數(shù),比如 public function __construct( $arg1, $arg2 ),這種情況下需要讓function a能夠自動(dòng)傳遞這兩個(gè)參數(shù)給 myClass 的構(gòu)造函數(shù)。

麻煩去看看重載。
作者: a_coder    時(shí)間: 2007-10-23 11:49
希望能找到更好的解決辦法。
作者: dz902    時(shí)間: 2007-10-23 12:49
原帖由 a_coder 于 2007-10-23 13:48 發(fā)表
8樓的辦法,有點(diǎn)復(fù)雜,一個(gè)比較簡(jiǎn)單的辦法是把 myClass 不定義 PHP 默認(rèn)的構(gòu)造函數(shù) __construct,定義一個(gè)自定義的具有構(gòu)造函數(shù)相同作用的方法 init,然后在func中

$myClass = new myClass;
call_user_func ...


constructor 如果有參數(shù),則自己 call init。
如果沒(méi)有參數(shù),則什么都不做。
作者: a_coder    時(shí)間: 2007-10-23 13:28
樓上說(shuō)得也對(duì),但是如果即沒(méi)有參數(shù),但是init確實(shí)還需要執(zhí)行呢。畢竟它起到了構(gòu)造函數(shù)的作用。不能保證沒(méi)有參數(shù)就不執(zhí)行的。所以,construct里面不能加上參數(shù)數(shù)量的判斷。但如果無(wú)論如何都自動(dòng)執(zhí)行initialize的話(huà),那么在function a()中的new myClass就會(huì)引發(fā)一個(gè)運(yùn)行錯(cuò)誤。

很矛盾的一個(gè)問(wèn)題。
作者: a_coder    時(shí)間: 2007-10-23 13:29
50分啊,50分啊,看誰(shuí)能拿走
作者: dz902    時(shí)間: 2007-10-23 13:33
但是如果即沒(méi)有參數(shù),但是init確實(shí)還需要執(zhí)行呢。


我不懂你的意思。constructor 可以有默認(rèn)參數(shù),init 也可以。

constructor = 至少 2 種情況 (有參,無(wú)參)
constructor + init = 至少 4 種情況 (con 有參 init 有參,con 有參 init 無(wú)參,con 無(wú)參 init 有參,con 無(wú)參 init 無(wú)參)

加上對(duì)參數(shù)的檢查,已經(jīng)足以滿(mǎn)足任何變態(tài)要求。
作者: achieverain    時(shí)間: 2007-10-23 13:43
看來(lái)有懸賞的帖子回答就是踴躍.我也湊湊熱鬧

LZ可以看看PHP實(shí)現(xiàn)  工廠模式  



這里是我的一段正在運(yùn)行中的代碼



class fu
{
.............



    function build($class_name,$param=null)
    {
        $f_path       =PATH_INCLUDE.$class_name.EXT;
        if($this->_is_exist(PATH_INCLUDE,$class_name.EXT))
        {
            if(!@is_object($this->$class_name))
            {
                require($f_path);
                $str = '$this->$class_name =new $class_name(';
                if (is_array($param)) {
                    foreach ($param as $key)
                    {
                        if (!empty($key)) {
                            $str .= '\''.$key.'\',';
                        }

                    }
                    $str = substr($str, 0, -1);
                }
                $str .= ');';
                eval($str);
                $this->obj[$class_name]  =&$this->$class_name;
                $this->$class_name->fu    = &$this;
                if (method_exists($this->$class_name,'init')) {
                    $this->$class_name->init();
                }
            }
            return $this->$class_name;
        }
        else
        {
            $this->fatal_error('file:'.$f_path.' not found!<BR>');

        }
    }

作者: a_coder    時(shí)間: 2007-10-23 13:46
暈。樓上的,用 eval 來(lái)寫(xiě)的?效率如何啊。這個(gè)我也曾考慮到,但是沒(méi)敢用。
作者: danssion    時(shí)間: 2007-10-23 13:49
我覺(jué)得那是重載

樓豬   給個(gè)你的定義?
作者: a_coder    時(shí)間: 2007-10-23 13:50
原帖由 dz902 于 2007-10-23 13:33 發(fā)表


我不懂你的意思。constructor 可以有默認(rèn)參數(shù),init 也可以。

constructor = 至少 2 種情況 (有參,無(wú)參)
constructor + init = 至少 4 種情況 (con 有參 init 有參,con 有參 init 無(wú)參,con 無(wú)參 ini ...


例子:
<?php

&nbsp;&nbsp;&nbsp;&nbsp;class a
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function __construct()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arguments = get_func_args();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call_user_func_array( array(&$this, 'init'), $arguments);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function init( $a, $b )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $a.$b;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;}


&nbsp;&nbsp;&nbsp;&nbsp;function load()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inst = new a;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$args = get_func_args();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call_user_func_array( array(&$inst, 'init'), $args );
&nbsp;&nbsp;&nbsp;&nbsp;}


?>

作者: sunnyfun    時(shí)間: 2007-10-23 13:51
說(shuō)了半天不就是想new的時(shí)候自動(dòng)初始話(huà)一下嘛,要知道__construct也是一個(gè)函數(shù):


  1. <?php

  2.     class Object {
  3.         function __construct( ) {
  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.     }

  15.     $o = new Object(1, 2, 3) ;

  16. ?>
復(fù)制代碼

作者: a_coder    時(shí)間: 2007-10-23 13:51
上面的代碼是有問(wèn)題的。但是如果,你在construct地方加上一個(gè)參數(shù)數(shù)量判斷,如果是0個(gè),不執(zhí)行init,這樣就不太合理。不能保證沒(méi)有參數(shù)就沒(méi)有init阿。畢竟init是一個(gè)構(gòu)造函數(shù)的作用
作者: a_coder    時(shí)間: 2007-10-23 13:53
原帖由 danssion 于 2007-10-23 13:49 發(fā)表
我覺(jué)得那是重載

樓豬   給個(gè)你的定義?



我在何處,重載了何物?
作者: sunnyfun    時(shí)間: 2007-10-23 13:56
我21樓的代碼有問(wèn)題?
作者: a_coder    時(shí)間: 2007-10-23 13:56
原帖由 achieverain 于 2007-10-23 13:43 發(fā)表
看來(lái)有懸賞的帖子回答就是踴躍.我也湊湊熱鬧

LZ可以看看PHP實(shí)現(xiàn)  工廠模式  



這里是我的一段正在運(yùn)行中的代碼



class fu
{
.............



    function build($class_name,$param=nul ...



我在考慮的這個(gè)東西的原型,是想做一個(gè)可以重用的單例外殼,不需要要做單例的類(lèi)進(jìn)行特殊處理,只需要通過(guò)一個(gè)特定的方法即可,而且也不要影響通過(guò) new 句柄來(lái)實(shí)例化這個(gè)類(lèi)。類(lèi)要派生于一個(gè)基礎(chǔ)類(lèi) obj,便于做一些全局的宏觀處理,比如在日志中記錄被實(shí)例化的具體的類(lèi)及其個(gè)數(shù),還有實(shí)例化以后的結(jié)果等等。
作者: a_coder    時(shí)間: 2007-10-23 13:58
原帖由 sunnyfun 于 2007-10-23 13:56 發(fā)表
我21樓的代碼有問(wèn)題?



sorry,隔樓了,我說(shuō)的是我引入的那段代碼有問(wèn)題,上面看一下就有
作者: a_coder    時(shí)間: 2007-10-23 14:00
原帖由 sunnyfun 于 2007-10-23 13:51 發(fā)表
說(shuō)了半天不就是想new的時(shí)候自動(dòng)初始話(huà)一下嘛,要知道__construct也是一個(gè)函數(shù):






建議你不要再亂作回答。請(qǐng)麻煩仔細(xì)閱讀每一層樓的代碼及說(shuō)明。

不要再在我的面前擺出一幅自以為是的自傲姿態(tài),不然我會(huì)忍不住罵人的。這貼不歡迎你參與,請(qǐng)離開(kāi),謝謝。

[ 本帖最后由 a_coder 于 2007-10-23 14:10 編輯 ]
作者: a_coder    時(shí)間: 2007-10-23 15:54
等下測(cè)試一下運(yùn)行速度。
作者: dz902    時(shí)間: 2007-10-23 16:27
我前面說(shuō)的解決辦法實(shí)現(xiàn):加一個(gè)參數(shù) $auto_init。

#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// PHP CODE Highliting for CU by dZ902


<?
function __construct($auto_init = FALSE, ...)
{
   
// ...
   
if ($auto_init == TRUE) {
        
call_user_func_array( array(&$this, 'init'), $args);
        return;
    } else {
        
// do construction
   
}
}
?>

作者: redicaps    時(shí)間: 2007-10-23 17:11
lz什么態(tài)度阿
作者: dz902    時(shí)間: 2007-10-23 17:12
原帖由 a_coder 于 2007-10-23 15:53 發(fā)表



我在何處,重載了何物?


從某種意義上說(shuō),重載了 constructor。
作者: a_coder    時(shí)間: 2007-10-23 17:51
原帖由 dz902 于 2007-10-23 17:12 發(fā)表


從某種意義上說(shuō),重載了 constructor。


沒(méi)有重載。construct被繼承了
作者: a_coder    時(shí)間: 2007-10-23 17:57
無(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í)行效率略高。

謝謝大家參與討論,結(jié)貼。
作者: sunnyfun    時(shí)間: 2007-10-24 11:12
如果想避免使用 eval 或者 create_function ,有一個(gè)辦法,寫(xiě)一個(gè)針對(duì)多參數(shù)function的子類(lèi),重寫(xiě)里面的__construct
作者: sunceenjoy    時(shí)間: 2007-10-30 17:32
樓主,有時(shí)間可以看看java,看看真正面向?qū)ο蟮恼Z(yǔ)言。那個(gè)時(shí)候就知道這叫  重載 了 !!
作者: ttvast    時(shí)間: 2007-10-30 22:40
還是一個(gè)疑問(wèn),為什么不用數(shù)組?

如果定義了參數(shù)位置,那就說(shuō)明每一個(gè)參數(shù)都由其意義,如果參數(shù)的數(shù)量根本沒(méi)有限制,那就說(shuō)明參數(shù)是一個(gè)列表,這種情況用數(shù)組是最標(biāo)準(zhǔn)的做法。
作者: ttvast    時(shí)間: 2007-10-30 22:44
lz就是一個(gè)計(jì)算機(jī)理論基礎(chǔ)差,又沒(méi)有什么實(shí)際開(kāi)發(fā)經(jīng)驗(yàn),還覺(jué)得自己掌握了php很nb, 手冊(cè)看得很熟練, 態(tài)度極其惡劣,自高自大的小孩子。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2