gpt4 book ai didi

Php define() 命名空间内的常量说明

转载 作者:IT王子 更新时间:2023-10-28 23:56:56 26 4
gpt4 key购买 nike

正如标题所述,我真的很想澄清这一点。我已经阅读了一些关于这个主题的文章和帖子,但有些东西对我来说并不合适。我会补充一点,我对 PHP 有点陌生。好的,这就是我想了解的内容;

namespace Information;
define('ROOT_URL', 'information/');
define('OFFERS_URL', ROOT_URL . 'offers/');

namespace Products;
define('ROOT_URL', 'products/');
define('OFFERS_URL', ROOT_URL . 'offers/');

我希望常量是可构造的,即从基本常量构建常量,这就是我使用define('NAME', value);的原因。

我的问题是,ROOT_URL 的值会产生相对于其命名空间的值吗?像这样;

$info_offers_url = \Information\OFFERS_URL;  ('information/offers/')
$prod_offers_url = \Products\OFFERS_URL; ('products/offers/')

或者定义();将 ROOT_URL 放在全局范围内,因此我不应该这样做吗?有更好的做法吗?

非常感谢所有帮助。

最佳答案

如果你想在命名空间中定义一个常量,你需要在你对define()的调用中指定命名空间,即使你是从一个命名空间中调用define()。下面我试过的例子会很清楚。

以下代码将在全局命名空间(即“\CONSTANTA”)中定义常量“CONSTANTA”。

<?php
namespace mynamespace;
define('CONSTANTA', 'Hello A!');
?>

如果你想为命名空间定义常量,你可以像这样定义

<?php
namespace test;
define('test\HELLO', 'Hello world!');
define(__NAMESPACE__ . '\GOODBYE', 'Goodbye cruel world!');
?>

否则,您可以使用 const 在当前命名空间中定义一个常量:

<?php

namespace NS;

define('C', "I am a constant");
const A = "I am a letter";

echo __NAMESPACE__, , PHP_EOL; // NS
echo namespace\A, PHP_EOL; // I am a letter
echo namespace\C, PHP_EOL; // PHP Fatal error: Uncaught Error: Undefined constant 'NS\C'

取自 Manual

关于Php define() 命名空间内的常量说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com