// Возврат нескольких значений:
function some() {
return [23, 42];
}
// Получение
[$a, $b] = some();
\var_dump($a, $b);
// Возврат нескольких значений:
function some() {
return ['a' => 23, 'b' => 42];
}
// Получение
['a' => $a, 'b' => $b] = some();
\var_dump($a, $b);
function some() {
yield 'a' => 23;
yield 'b' => 42;
}
foreach (some() as $key => $value) {
echo $key . ':' . $value; // a:23 b:42
}
function some() {
yield 23;
yield 42;
}
foreach (some() as $value) {
echo $value; // 23 42
}
function some() {
yield 23;
return 42;
}
$value = some();
echo $value->current(); // 23
$value->next();
echo $value->getReturn(); // 42
class DataTransferObject
{
private $a;
private $b;
public function __construct($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function getA()
{
return $this->a;
}
public function getB()
{
return $this->b;
}
}
function some() {
return new DataTransferObject(23, 42);
}
$value = some();
echo $value->getA(); // 23
echo $value->getB(); // 42
const validClasses = ['className', 'jobsWrapper'];
return [...el.classList].some(className => validClasses.includes(className));
function getCursorPosition(parent) {
let selection = document.getSelection()
let range = new Range
range.setStart(parent, 0)
range.setEnd(selection.anchorNode, selection.anchorOffset)
return range.toString().length
}
function setCursorPosition(parent, position) {
let child = parent.firstChild
while(position > 0) {
let length = child.textContent.length
if(position > length) {
position -= length
child = child.nextSibling
}
else {
if(child.nodeType == 3) return document.getSelection().collapse(child, position)
child = child.firstChild
}
}
}
try { var aa=VAR; } // если тут отхватим исключение - значит у нас нет переменной VAR
catch(e) { VAR =undefined; }; // присвоение undefined значения - _определит_ переменную
// и далее её можно использовать
var bb=VAR; // тут уже не вылетит исключение
$string = "12,14,152,66,15";
$res = explode(',', $string);
$pos = array_search(15, $res);
SELECT * FROM goods WHERE cost < 100.00
на $db->select()->from('goods')->where('cost < 100.00')
. ORM это способ задания связи объектов и РСУБД. По сути позволяет абстрагироваться от способа хранения объектов вообще, с лёгкостью переходя от SQL к NoSQL, memcache, файлам или REST/RPC API на удалённом сервере, оперируя на уровне модели (если говорить о MVC и т. п.) простыми plain old objects, а их персистентность отдать контроллеру. Не $db->select()->from('goods')
,, не mysql_query('SELECT * FROM goods'), а $goodsRepository->findAll(), а уж будет репозиторий формировать SQL запрос, читать файлы или память, а может стучаться на Гугл и парсить его вывод — его, репозитория, личное дело (а также разработчика(ов), отвечающих за подсистему хранения).RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]