Как объединить значение переменной в постоянное значение и вывести как постоянное - PullRequest
1 голос
/ 14 мая 2019

Я хочу передать значение переменной в часть постоянного значения для форматирования в файле Excel с использованием phpspreadsheet.

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 ]

1 голос
/ 14 мая 2019

Как и в первом примере, вам нужно получить значение константы класса с помощью функции constant, передав имя, которое вы вычисляете динамически.Между тем, с псевдонимом класса, вам нужно немного взломать вызов, как предложено в этом 4-летнем комментарии в документации php .

Вот тест, который я сделал.У меня не установлена ​​ваша библиотека, поэтому я создал что-то с нуля в качестве минимального многоразового использования.

Сначала я создал 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
0 голосов
/ 14 мая 2019

Другой способ, который работает путем передачи значения в константу и вывода в виде константы:

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

Для этого

нельзя использовать 'использовать PhpOffice \ PhpSpreadsheet \ Worksheet как Рабочий лист ; '

и объединение Рабочий лист \ PageSetup :: ORIENTATION_ со значением $.

Тогда при ошибке выдачи не удалось найти константу.

Нам нужно написать полную ссылку и объединить переменную с константой

константа ('PhpOffice \ PhpSpreadsheet \ Worksheet \ PageSetup :: ORIENTATION _'. $ Value);

Тогда все работает.

...