Php 如何将$\u中的值传递到常量中?

Php 如何将$\u中的值传递到常量中?,php,class,oop,get,Php,Class,Oop,Get,当我在Product类中创建一个常量时,我可以在Product::id的其他类中使用该常量,一切正常: <?php class Product { const id = "4325536"; } ... 但当我试图从URL获取一个值到const时,没有任何效果: <?php class Product { const id = $_GET['product']; } ... 如何将URL中的值获取到对象中?您不能。类常量的值需要在编译/解析时确定。请求

当我在Product类中创建一个常量时,我可以在Product::id的其他类中使用该常量,一切正常:

<?php
class Product
{ 
    const id = "4325536";
}
...
但当我试图从URL获取一个值到const时,没有任何效果:

<?php
class Product
{ 
    const id = $_GET['product'];    
}
...
如何将URL中的值获取到对象中?

您不能。类常量的值需要在编译/解析时确定。请求中传递的值只能在运行时进行计算

有关如何在PHP中使用类常量的更多详细信息,请参阅文档:

您不能。类常量的值需要在编译/解析时确定。请求中传递的值只能在运行时进行计算


有关如何在PHP中使用类常量的更多详细信息,请参阅文档:

您可以这样做

<?php

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

class Product
{ 
    const id = ID;    
}

我不确定,但是,请参阅。例3你可以这样做

<?php

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

class Product
{ 
    const id = ID;    
}


我不确定,但是,请参阅。例3

我被吓坏了。这就意味着,OOP是完全无用的。有没有其他方法可以将URL中的值获取到对象中?您可以随时访问请求变量runtime@jedrzej.kurylom我们可以通过在类外定义全局常量和通过全局常量初始化类的常量来实现constant@jedrzej.kurylo,是的,我知道这有点像是代码中的黑客或补丁,但有时我们需要做一些技巧来满足需求,在所有的应用程序和框架中,他们都试图实现高达99%的代码的良好实践,但为了实现这样的目标,他们在代码内部使用了一些技巧,当我们使用第三方模块时,我们经常做这种技巧。我希望你同意我的观点。TBH我无法想象任何业务需求会要求任何人做OP想做的事情,特别是业务需求很少影响代码在如此低的层次上的结构方式。有更好的方法来访问特定于请求的数据,而不是将它们放在constantsI类中。这就意味着,OOP是完全无用的。有没有其他方法可以将URL中的值获取到对象中?您可以随时访问请求变量runtime@jedrzej.kurylom我们可以通过在类外定义全局常量和通过全局常量初始化类的常量来实现constant@jedrzej.kurylo,是的,我知道这有点像是代码中的黑客或补丁,但有时我们需要做一些技巧来满足需求,在所有的应用程序和框架中,他们都试图实现高达99%的代码的良好实践,但为了实现这样的目标,他们在代码内部使用了一些技巧,当我们使用第三方模块时,我们经常做这种技巧。我希望你同意我的观点。TBH我无法想象任何业务需求会要求任何人做OP想做的事情,特别是业务需求很少影响代码在如此低的层次上的结构方式。有更好的方法访问特定于请求的数据,而不是将它们放在constantsUse definename类(构造函数中的值)中。你确定你要找的是常数吗?看起来更像是希望静态类成员在构造函数中使用definename和value。你确定你要找的是常数吗?看起来更像是想要一个静态类成员,但这不起作用。如果要使用const ID=4325536;一切都很好,但不是const ID=$_GET['product'];太好了非常感谢你!!最佳答案。对不起,由于我的名声不好,我不能对你的答案投赞成票。很高兴听到它的工作。。。我对你的问题投了赞成票,所以现在你有权放弃投票:。。别忘了标记为正确。。。不管怎样,谢谢。这不行。如果要使用const ID=4325536;一切都很好,但不是const ID=$_GET['product'];太好了非常感谢你!!最佳答案。对不起,由于我的名声不好,我不能对你的答案投赞成票。很高兴听到它的工作。。。我对你的问题投了赞成票,所以现在你有权放弃投票:。。别忘了标记为正确。。。谢谢anyway@MohmadZare,这里x不是类常量,它是一个全局常量:虽然这个代码片段可以解决这个问题,但确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性@Mohmad Zare,这里的x不是类常量,而是一个全局常量:虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性!