Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public:private int $id;
public:protected string $name;
public private(set) int $id;
public protected(set) string $name;Что-то похожее есть в C#, но у него куда более элегантный вид:
private string birthday;
public string Name { get; set; }
public string SecondName { get; }
public string Birthday {
get;
set {
birthday = String.Trim(value);
}
}Как по мне — изменения в целом стоящее, но не в этом вот виде, который предлагается.
Такой вариант как раз предлагался https://wiki.php.net/rfc/propertygetsetsyntax-v1.2, но не прошел голосование на тот момент.
class C:
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")class C:
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._xСтранно сравнивать с пайтоном, учитывая то, что в нем все свойства/методы публичные
/** @property string x */
class С
{
public function __get($name)
{
return $name;
}
public function __set($name, $value)
{
$this->x = $value;
}
public function __unset($name)
{
unset($this->x);
}
}
А как в шарпе сделать протектед на чтение и приват на запись?
Ридонли возможно будут в виде атрибута https://wiki.php.net/rfc/readonly_and_immutable_properties (ранний черновик)
<?php
class Person
{
public readonly string $name;
}
<?php
class Person
{
public function __construct(
public readonly string $name,
) {}
}
<?php
readonly class Person
{
//
}
И во-вторых, разрешить пробельные символы в конце числовых строк, то есть чтоб «123 » == " 123" было true и все прочие операции работали, как и для строк с начальными пробелами.
Например в таком случае echo '2str' + 2; результат будет не 4, а 2 и вместо E_NOTICE “A non well formed numeric value encountered” будет брошен E_WARNING “A non-numeric value encountered”.
match напоминает оператор из Rust, было бы очень удобно иметь подобную реализацию в PHP
PHP-Дайджест № 183 (22 июня – 5 июля 2020)