如何将变量值组合为常数值并输出为常数

时间:2019-05-14 03:34:06

标签: php phpspreadsheet

我想将变量值传递给常量值的一部分,以便使用phpspreadsheet在Excel文件中进行格式化。

1)我定义了常量,并使用变量值调用常量值。

use PhpOffice\PhpSpreadsheet\Worksheet as Worksheet;
$value                    ='PORTRAIT';
define("PORTRAIT", Worksheet\PageSetup::ORIENTATION_PORTRAIT);              
define("LANDSCAPE",Worksheet\PageSetup::ORIENTATION_LANDSCAPE);
$orientation_constantvalue=constant($value);        
$set_orientation          =$sheet->getPageSetup()->setOrientation($orientation_constantvalue);

这个有效。

2)我直接将变量值传递给常量值的一部分。

use PhpOffice\PhpSpreadsheet\Worksheet as Worksheet;
$value                    ='PORTRAIT';
$orientation_constantvalue="Worksheet\PageSetup::ORIENTATION_{$value}";
$set_orientation          =$sheet->getPageSetup()->setOrientation($orientation_constantvalue);

这个没有用。

如果可能的话,我想直接将变量值传递给常量值,这是因为我们可能不需要为常量中的每种可能值类型定义常量

2 个答案:

答案 0 :(得分:1)

就像您在第一个示例中所做的那样,您需要通过传递您正在动态计算的名称来使用constant函数来获取类常量的值。同时,使用类别名,您需要按照此4 years old comment in php documentation的建议修改该调用。

这是我进行的测试。我没有安装您的库,因此我从头开始创建了一些东西作为可重用的最小示例。

我首先使用命名空间类创建了class.php

<?php
namespace Toto\Pipo;
class Bingo {
    const ORIENTATION_PORTRAIT = "Value for Portrait";
    const ORIENTATION_LANDSCAPE = "Value for Lanscape";
}

然后我创建了一个use_class_constant.php脚本来完成您要实现的目标:

<?php
include('class.php');
use Toto\Pipo\Bingo as Worksheet;

$orientation = 'PORTRAIT';
echo constant(Worksheet::class."::ORIENTATION_{$orientation}") . "\n";

结果如下:

$ php use_class_constant.php 
Value for Portrait

如果需要,这是我使用的php版本:

$ php -v
PHP 7.2.17-0ubuntu0.18.04.1 (cli) (built: Apr 18 2019 14:12:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.17-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

答案 1 :(得分:0)

将值传递给常量并将其输出为常量的另一种方法:

$orientation_constantvalue =constant('PhpOffice\PhpSpreadsheet\Worksheet\PageSetup::ORIENTATION_'.$value);
$set_orientation            =$sheet->getPageSetup()->setOrientation($orientation_constantvalue);

为此,

  

不能使用“将PhpOffice \ PhpSpreadsheet \ Worksheet用作工作表;”

     

并将工作表 \ PageSetup :: ORIENTATION_与$ value串联。

然后,它抛出错误找不到常量。

我们需要编写完整的引用,并将其与常量连接起来

  

constant('PhpOffice \ PhpSpreadsheet \ Worksheet \ PageSetup :: ORIENTATION _'。$ value);

然后,它起作用。