にっき

2007/09/18 23:57:15

すたてぃっくこ〜る


むぅ・・・
PHP の ver4 系も今年いっぱいでおしまいってことで ver5 系でおぶじぇくてぃぶに☆
って思ったけど static なめそっどの呼び出し方法がなんだかすっきりしないにう・・・ (´ω`;【みかん



abstract class ぷりん
{
    public function __constract()
    {
        $type = 継承したとこの getType();
    }
    
    abstract public static getType();
}

class 焼きぷりん extends ぷりん
{
    public static getType()
    {
        return '焼く';
    }
}

class 蒸しぷりん extends ぷりん
{
    public static getType()
    {
        return '蒸す';
    }
}

みたいなことしたいんだけど・・・
継承したとこの指定方法がよくわかんないにう(つx;【みかん
たいぷは各くらす毎に違うけどいんすたんすを生成しないでも取得できるようにしたいからってことで
static 指定で外部から呼び出すときは
焼きぷりん::getType();
蒸しぷりん::getType();
で呼び出せるからぜんぜん問題ないんだけど・・・
内部・・・っていうか親くらすから呼び出すときはどうなるのかなぁ?
どんなくらすに派生するかわかんないからくらす名を指定するのはちょっと無理っぽいし・・・

self::getType();
なんてやってみたけど self は描いたくらすそのものだから
ぷりん::getType();
なかんじでみたいで abstract めそっどは呼び出せませんって怒られちゃうし
parent::getType();
だと親くらすのは呼び出せるけど今回呼びたいのは子供のにう(つx;【みかん
$this::getType();
でもだめだったし・・・
$func = get_class($this) . '::getType';
$func();
なんてかんじなら動きそうな気もするけどすっきりしにゃいよね・・・

そんなこんなでいろいろ試してたら
$this->getType();
で strict えら〜も出ないで動いちゃったんだけど・・・
これはこれで static こ〜るじゃなくてすっきりしにゃいのは気のせいにう?(´ω`;【みかん
たぶんきっともっとすっきりできる方法があると思うんだけどどうなのかにゃぁ・・・


こめんと

投稿日時:2007-9-19 10:51  更新日時:2007-9-19 10:51
 もきゅ・・・
get_class を使う方法は

$func = get_class($this) . '::getType';
$func();



$class = get_class($this);
$class::getType();



$class = get_class($this);
$func = 'getType';
$class::$func();

もだめだめっぽいのにう(つx;【みかん
でもなんで一番上のすてきにすたてぃっくこ〜るしてそうなのは

Fatal error: Call to undefined function 焼きぷりん::getType() in xxxxx

なえら〜が出ちゃうのかなぁ?
とりあえずな正解は

call_user_func(array(get_class($this),'getType'));

なかんじか・・・ってなんで

焼きぷりん::getType();

はおっけぃなのに

call_user_func(array(get_class($this),'getType'));



Strict Standards: Non-static method 焼きぷりん::getType() cannot be called statically, assuming $this from compatible context 焼きぷりん in xxx

って怒られちゃうのにう?(´・ω・`;【みかん

投稿日時:2007-9-19 11:32  更新日時:2007-9-19 11:32
 むぅ・・・
PHP のう゛ぁ〜ぢょんが原因かもと思って最新の 5.2.4 にあっぷしてみたけど・・・

Strict Standards: Static function ぷりん::getType() should not be abstract in xxx

ってそういわれてみると static を abstract ってむちゃなおはなしだったにう(つx;【みかん
けっきょく・・・

interface ぷりんの素
{
abstract public static getType();
}

abstract class ぷりん implements
{
public function __constract()
{
$type = call_user_func(array(get_class($this),'getType'));
}
}

class 焼きぷりん extends ぷりん
{
public static getType()
{
return '焼く';
}
}

class 蒸しぷりん extends ぷりん
{
public static getType()
{
return '蒸す';
}
}

みたいにいんた〜ふぇいすでもう1枚らっぷすれば解決・・・にう?(´ω`;【みかん

投稿日時:2007-9-19 11:34  更新日時:2007-9-19 11:34
 って・・・
こっちでも BBCODE 有効にしとかないとあんまり見やすくないにゃぁ・・・
でもこのこめんと機能とてもむうみんでは手が出せそうにないすぱげってぃだった気がするにう(つx;【みかん

こめんとする?



 
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆
また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん
さぶこんてんつ
前月 2024年 5月 翌月
      1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31
 
 
             
  • あじ あじ
  • ED ED
  • えでん えでん
  • えれふぃ えれふぃ
  • ぐらぶれ ぐらぶれ
  • etc etc
  • にっき にっき

あわせて読みたい

先頭に戻る
めにう 先頭に戻る