2016-08-05 2 views
1

Когда я создаю константу в class «Продукт», то я могу использовать эту константу в других классах с Product :: id, и все хорошо. :-)

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

Но когда я пытаюсь получить значение из URL в сопзЬ, ничего не работает:

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

Как я могу получить значения из URL в Object?

+0

Используйте '' 'define (name, value)' '' in '' 'constructor'''. 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

Вы можете сделать что-то вроде этого

<?php 

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

class Product 
{ 
    const id = ID;  
} 

Я не уверен, но, обратитесь за это. http://php.net/manual/en/language.oop5.constants.php Пример № 3

+0

Это не работает. Если вы использовали бы 'const ID = 4325536;' все хорошо, но не 'const ID = $ _GET ['product'];' – user2830595

+0

Я отредактировал свой ответ, пожалуйста, проверьте это ... –

+0

GREAT! !!! - Большое спасибо!! Лучший ответ. (Извините, из-за моей низкой репутации я не могу поддержать ваш ответ). – user2830595

3

Вы не можете. Значение для константы класса необходимо определить во время компиляции/разбора. Значения, переданные в запросе, могут оцениваться только во время выполнения.

Смотрите документацию для получения более подробной информации о том, как использовать константы класса в PHP: http://php.net/manual/pl/language.oop5.constants.php

+0

Я пошатнулся. Это означало бы, что ООП совершенно бесполезен. Есть ли другие способы получить значения из URL-адреса в объект? – user2830595

+0

Вы всегда можете получить доступ к переменным запроса во время выполнения –

+0

@ jedrzej.kurylom, мы можем добиться определением глобальной константы вне класса и инициализировать константу класса глобальной константой –

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

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

@Mohmad Zare, здесь х нет константы класса, его глобальная константа :) –

+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество своей должности. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, так как это уменьшает читаемость кода и объяснений! – FrankerZ

Смежные вопросы