2016-08-05 1 views
1

class "Product"に定数を作成すると、この定数をProduct :: idのほかのクラスで使用でき、すべてがうまくいきます。 :-)

<?php 
class Product 
{ 
    const id = "4325536"; 
} 
... 

しかし、私はconstのにURLから値を取得しようとすると、何も動作:

<?php 
class Product 
{ 
    const id = $_GET['product'];  
} 
... 

私は、オブジェクトにURLから値を取得できますか?

+0

'' 'constructor'''の' 'define(name、value)' 'を使用してください。 http://php.net/manual/en/function.define.php –

+0

あなたは定数があなたが探しているものは確かですか?あなたは静的なクラスメンバーがほしいと思うようです。http://stackoverflow.com/questions/3818333/how-do-i-access-static-member-of-a-class – rypskar

答えて

1
+0

これは動作しません。 'const ID = 4325536; を使用していますが、 ' const ID = $ _GET ['product']; ' – user2830595

+0

私は答えを編集しましたので、これを確認してください... –

+0

素晴らしいです! !!! - どうもありがとうございました!!最高の答え。 (申し訳ありませんが、私の低い評判のため、私はあなたの答えをupvoteできません)。 – user2830595

3

できません。クラス定数の値は、コンパイル/解析時に決定する必要があります。リクエストで渡された値は、実行時にのみ評価できます。

は、PHPでクラス定数を使用する方法の詳細についてはドキュメントを参照してください:あなたは私はわからないこの

<?php 

define('ID',$_GET['product']); 

class Product 
{ 
    const id = ID;  
} 

ような何かをしかし、このために参照することができhttp://php.net/manual/pl/language.oop5.constants.php

+0

私はずらしています。つまり、OOPはまったく役に立たないということです。 URLからオブジェクトに値を取得する他の方法はありますか? – user2830595

+0

実行時に常に要求変数にアクセスすることができます –

+0

@ jedrzej.kurylom、クラス外のグローバル定数を定義してグローバル定数でクラスの定数を初期化することで実現できます –

0
class Y 
{ 
    public function __construct($var) 
    { 
     define("X",$var); 
    } 
} 

new Y($_GET['x']); 
+1

@Mohmad Zare、ここxはないクラス定数、そのグローバル定数:) –

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)あなたの投稿の質を向上させる。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明の両方の可読性が低下するため、説明的なコメントを使用してコードを混乱させないようにしてください。 – FrankerZ

関連する問題