Есть ли эквивалент «let» vs. var в PHP?
PHP не имеет let
как особенность родного языка, но (как текущей версии 7.1.4 - 04/2017)
Но, некоторые расширения высокопроизводительные как Phalcon и Ice имеют поддержку let
, из-за базового использования zephir-lang. Итак, есть let
, но косвенно; используя вышеупомянутые расширения.
Есть два варианта использования:
В качестве примера посмотрите на источник для Ice Router:
namespace Ice\Mvc\Route;
use Ice\Mvc\Route\Parser\ParserInterface;
use Ice\Mvc\Route\DataGenerator\DataGeneratorInterface;
use Ice\Mvc\Route\Parser\Std;
use Ice\Mvc\Route\DataGenerator\GroupCount as Generator;
class Collector
{
private routeParser { set };
private dataGenerator { set };
/**
* Constructs a route collector.
*
* @param RouteParser $routeParser
* @param DataGenerator $dataGenerator
*/
public function __construct(<ParserInterface> routeParser = null, <DataGeneratorInterface> dataGenerator = null)
{
if !routeParser {
let routeParser = new Std();
}
if !dataGenerator {
let dataGenerator = new Generator();
}
let this->routeParser = routeParser,
this->dataGenerator = dataGenerator;
}
/**
* Adds a route to the collection.
*
* The syntax used in the $route string depends on the used route parser.
*
* @param string|array $httpMethod
* @param string $route
* @param mixed $handler
*/
public function addRoute(var httpMethod, string route, handler = null)
{
var routeDatas, routeData, method;
let routeDatas = this->routeParser->parse(route);
if typeof httpMethod == "string" {
let method = httpMethod,
httpMethod = [method];
}
for method in httpMethod {
for routeData in routeDatas {
this->dataGenerator->addRoute(method, routeData, handler);
}
}
}
/**
* Returns the collected route data, as provided by the data generator.
*
* @return array
*/
public function getData()
{
return this->dataGenerator->getData();
}
}
[РНР константы] (http://php.net/manual/en/ language.constants.php), которые определяются через 'define ('CONSTNAME', 'constant value')' или через 'const CONSTNAME = 'постоянное значение' [в классе] (http://php.net/manual/ ен/language.constants.php). Это то, что вы хотели знать? –
@MichaelBerkowski Изгнанная номенклатура от Apple aisde, 'let' переменные не являются константами, они являются неизменяемыми переменными. Они инициализируются во время выполнения, в точке, где определение отображается (и потенциально более одного раза, если блок, в котором они определены, повторно введен). – hobbs
Например, если 'x' является параметром функции,' let y = x + 1' является полностью законным и будет давать 'y' другое значение при каждом вызове функции (но он не может быть переназначен внутри функции) , – hobbs