【发布时间】:2019-05-02 03:15:11
【问题描述】:
过去一个小时我只是在研究这个,试图找出最好的方法。
我正在开发一个 PHP CLI 应用程序,它使用以下函数来查找命令行宽度。
function getColLen() {
$getcolLen = shell_exec('tput cols');
$colLen = (int) $getcolLen;
return $colLen;
}
现在,我正在使用大约 8 个类,并且我经常使用这个函数——在大多数类和类中的许多方法中。
以前它只是包含在作曲家供应商自动加载functions.php 文件中,我在每个函数中初始化它,比如
public function Tagger()
{
$colwidth = getColLen();
. . . . .
等等
我研究了许多在 PHP 类中使用动态全局变量的不同选项,其中有很多,有些变得相当复杂。
为了好玩,我决定尝试将其添加到我的 functions.php 文件中的 CONSTANT
define('CLIWIDTH', getColLen());
我认为这行不通,因为我阅读的所有信息(以及我看到的所有示例)都是关于定义静态变量(例如字符串或目录)的。
但令我惊讶的是,这工作得非常好。一个简单的echo CLIWIDTH; 任何地方都会带来命令行宽度(在以不同大小启动控制台时,针对不同输出进行了成功测试)。
这不是被广泛认为是在所有文件中创建动态变量的正确方法吗?也许我没有搜索正确的术语,但我从未听说过有人在诸如此类的已定义常量内使用函数。
这是正确的代码吗?在讨论常量、全局变量等时,是否有理由不推荐这样做?
【问题讨论】:
-
define()的第二个参数没有限制。
标签: php class oop command-line-interface constants