Небольшая модификация приведенного выше сценария. Вы можете использовать эту функцию внутри любого класса без расширения класса BladeCompiler.
public function bladeCompile($value, array $args = array())
{
$generated = \Blade::compileString($value);
ob_start() and extract($args, EXTR_SKIP);
// We'll include the view contents for parsing within a catcher
// so we can avoid any WSOD errors. If an exception occurs we
// will throw it out to the exception handler.
try
{
eval('?>'.$generated);
}
// If we caught an exception, we'll silently flush the output
// buffer so that no partially rendered views get thrown out
// to the client and confuse the user with junk.
catch (\Exception $e)
{
ob_get_clean(); throw $e;
}
$content = ob_get_clean();
return $content;
}
Кажется, что новый способ Chrome отображать неинициализированные индексы в массивах (и объектах, подобных массиву ):
> Array(100)
[undefined × 100]
Это, конечно, лучше, чем печать [undefined, undefined, undefined,...]
или как бы это было раньше.
Хотя, если есть только одно значение undefined
, они могут сбросить x 1
.
Вот как это выглядит: введите этот код в консоль chrome devtools: -
arr = new Array(4);
arr[2] = "adf";
console.log(arr); // [undefined × 2, "adf", undefined × 1]
См. первые два последовательных «неопределенных», которые представлены * 2, чтобы показать, что есть два последовательных undefined there
Новые версии Chrome используют empty ×
вместо undefined ×
, чтобы сделать разницу более четкой.
Например, ввод [, undefined]
в консоли DevTools приводит к:
▶(2) [empty × 1, undefined]
и проверяет ключи в:
▼(2) [empty × 1, undefined]
1: undefined
length: 2
▶__proto__: Array(0)
Google Chrome, похоже, отображает разреженный массив с использованием этой undefined x n
нотации. Он покажет [undefined, undefined]
, если он не является разреженным массивом:
var arr = new Array(2);
console.log(arr);
var arr2 = [];
arr2[3] = 123;
console.log(arr2);
var arr3 = [,,,];
console.log(arr3)
var arr4 = [,];
console.log(arr4)
var arr5 = [undefined, undefined]
console.log(arr5)
var arr6 = [undefined]
console.log(arr6)
arr1 to arr4 - все разреженные массивы, а arr5 и arr6 - нет. Chrome покажет их как:
[undefined × 2]
[undefined × 3, 123]
[undefined × 3]
[undefined × 1]
[undefined, undefined]
[undefined]
обратите внимание на [undefined x 1]
для разреженного массива.
Поскольку вы удалили элемент, это: Если вы удалите элемент из массива, массив становится разреженным.