2017-12-28 21 views
0

私はクラス名を持っており、名前を使ってクラスから静的属性を取得したいと考えています。もちろん、クラス名を何度も書く必要はありません。私が来ることができるのはこれだけです。クラス名をPHPの静的属性として直接使用する方法

class MyClass 
{ 
    public static $shopClass = 'super\Long\Class\name\I\want\to\have\only\Here'; 

    public function do($classesStaticAttribute){ 

     $shopClass = self::$shopClass; //I would like to avoid this row... 
     $this->doSomeStuff($shopClass::$$classesStaticAttribute); 

    } 
} 

$shopClass = self::$shopClass行を回避して属性に直接アクセスする方法はありますか? {self::$shopClass}::$$classesStaticAttributeは機能しません。

+0

ここで、クラス属性b静的な属性としてクラス名を使用するy? – kranthi

+0

うまく、idは..... – Charlestone

答えて

2

あなたは、単にあなたが簡単に使用することができ、すなわち

use super\Long\Class\name\I\want\to\have\only\Here as Shop; 

class MyClass 
{ 
    public function do($classesStaticAttribute){ 

     $this->doSomeStuff(Shop::$$classesStaticAttribute); 

    } 
} 

また、あなたは$shopClassプロパティは、外部から設定可能になりたいと言う、use経由クラスシンボルをインポートすることができ

$this->doSomeStuff(constant(self::$shopClass . '::$' . $classesStaticAttribute)); 

参照してください。 http://php.net/manual/function.constant.php

+0

クール、私はそれを行うことができることを忘れて:)私は 'MyClass :: $ shopClass :: $ attribute'のようなものが別のファイル私はそのファイルでも 'use'を使わなければならないでしょう...)、しかし幸いにも私は今必要はありません:) – Charlestone

+0

@Charlestone別の方法を追加しました – Phil

関連する問題