読者です 読者をやめる 読者になる 読者になる

どうやらstaticメソッドは継承先クラスでオーバーライドもしくは実装されたメソッドを認識できず、親クラスか自分のクラス内部に「直接」書かれたメソッドのみ認識可能と言う話。
今回のように、継承先のstaticメソッドから取得した値を使って戻り値を生成するstaticメソッドを実装する場合、

<?php
class stReservedNopay implements mailOrderState
{
    public static getLargeStateCode()
    {
        return self::STATE_RESERVED;
    }

    public static getMiddleStateCode()
    {
        return self::STATE_RESERVED_NOPAY;
    }

    public static getStateSerialKey()
    {
        return self::getLargeState() * 1000 + self::getMiddleState();
    }
}


class stArraival implements mailOrderState
{
    public static getLargeStateCode()
    {
        return self::STATE_ARRIVAL;
    }

    public static getMiddleStateCode()
    {
        return self::STATE_ARRIVAL_INBOX;
    }

    public static getStateSerialKey()
    {
        return self::getLargeState() * 1000 + self::getMiddleState();
    }
}


class stDisplayOutercase implements mailOrderState
{
    public static getLargeStateCode()
    {
        return self::STATE_DISPLAY;
    }

    public static getMiddleStateCode()
    {
        return self::STATE_ARRIVAL_OPENBOX;
    }

    public static getStateSerialKey()
    {
        return self::getLargeState() * 1000 + self::getMiddleState();
    }
}

が正解??