Невозможно определить класс const как двоичную строку — phpserial, Laravel, Stack Overflow

Я использую phpserial в домашнем проекте Laravel для вывода настроек освещения на контроллер освещения DMX через последовательный порт USB. Это прекрасно работает, если я объявляю защищенную строку, но когда я пытаюсь установить const в классе, это не работает.

Как мне создать const, который состоит из 3 двоичных байтов (1,0,1)?

Фрагмент кода:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use PhpSerial;

class SerialCommsServiceProvider extends ServiceProvider
{
/**
* The Serial Interface
*/
protected $serial;
CONST INITLIGHTS = chr(1) . chr(0) . chr(1); // THIS FAILS BUT CONST MUST BE DECLARED AT TOP SCOPE IN CLASS
protected $initLights;
/**
* Create a new serial interface
*

*/
public function __construct()
{
$this->serial = new PhpSerial();
//Get environmental config or if not available, use the default (second parameter_
$this->serial->deviceSet(env('SERIAL_DEVICE','USB0'));
$this->serial->confBaudRate(env('SERIAL_BAUD_RATE','9600'));
$this->serial->confParity(env('SERIAL_PARITY','none'));
$this->serial->confCharacterLength(env('SERIAL_CHARACTER_LENGTH',8));
$this->serial->confStopBits(env('SERIAL_STOP_BITS',1));
$this->serial->confFlowControl(env('SERIAL_FLOW_CONTROL','none'));
if (env('APP_ENV') === 'production') {
// So now we need to open it
$this->serial->deviceOpen();
$this->initLights = chr(1) . chr(0) . chr(1); //THIS WORKS FINE, BUT AS THE INIT STRING IS A CONSTANT...

1

Решение

PHP документы утверждают, что константа класса должна быть a constant expression, not (for example) a variable, a property, or a function call.; и хотя в PHP 5.6 добавлена ​​поддержка базовых выражений в определении констант, он по-прежнему не поддерживает вызовы функций.

Тем не менее, вы можете выразить эту последовательность символов без необходимости вызова chr() сделать так

CONST INITLIGHTS = "\x00\x01\x00";

поэтому не нужно использовать переменные, свойства, вызовы функций или даже выражения, просто определение строки

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector