App: classicModels - Page: options
PHP
|
HTML
options.pad
|
Result
|
|
<p>where: {offices where="country = 'USA'", order='officeCode'}{$officeCode},{/offices}</p> <p>distinct: {offices distinct, fields='country', order='country'}{$country},{/offices}</p> <p>distinctrow: {offices distinctrow, fields='country', order='country'}{$country},{/offices}</p> <p>group: {payments fields='customerNumber, count(*) as cnt', group='customerNumber', having='cnt > 9', order='customerNumber'}{$customerNumber}={$cnt},{/payments}</p> <p>rollup: {offices key='', fields='count(*) as cnt', group='country', rollup}{last@offices}{$cnt}{/last@offices}{/offices}</p> <p>db: {sales db='employees', where="jobTitle = 'President'"}{$lastName}{/sales}</p> <p>key: {offices key='city', where="country = 'USA'"}{$city},{/offices}</p> <p>union: {offices where="officeCode = 1", union='offices'}{$officeCode},{/offices}</p> <p>join: {employees join='offices on employees.officeCode = offices.officeCode', where="offices.city = 'Boston'", order='lastName'}{$lastName},{/employees}</p> <p>htmlAttrJson: {select:offices htmlAttrJson='record', fields='officeCode', where="officeCode = 1"}</p>
|
|
App: manual - Page: fragments/expressions_2
PHP
|
HTML
fragments/expressions_2.pad
|
Result
|
|
{data 'stock'} [ {"item": "pen", "qty": 12}, {"item": "ink", "qty": 0}, {"item": "pad", "qty": 5} ] {/data} {stock where='$qty gt 0', %order = 20 - $qty} <p>{$item}: {$qty} in stock, order {$order}</p> {/stock}
|
|
App: manual - Page: fragments/expressions_29
PHP
|
HTML
fragments/expressions_29.pad
|
Result
|
|
{data 'orders'} [ {"nr": 1, "state": "paid", "customer": "Ada"}, {"nr": 2, "state": "cancelled", "customer": "Alan"}, {"nr": 3, "state": "sent", "customer": "Bob"}, {"nr": 4, "state": "sent", "customer": "Alice"} ] {/data} {orders where='$state not in ("cancelled", "refunded") and $customer like "A%"'} <p>{$nr}: {$customer}, {$state}</p> {/orders}
|
|
App: manual - Page: miscellaneous/handling
App: regression/errors - Page: error/demand_after_handling_left_no_row
PHP
|
HTML
error/demand_after_handling_left_no_row.pad
|
Result
|
|
{data 'xs'} [1,2,3] {/data} {xs where='$xs gt 5', demand} {$xs}, {/xs}
|
|
App: regression/errors - Page: syntax/a_bare_name_spliced_far_into_a_long_where_is_refused
PHP
syntax/a_bare_name_spliced_far_into_a_long_where_is_refused.php
|
HTML
syntax/a_bare_name_spliced_far_into_a_long_where_is_refused.pad
|
Result
|
<?php
// A value that calls a function by its bare name - strlen 5, no ( and no : - spliced into a // where= past the window the splice looks back over is refused as part of the condition, as // one with php:abs(-3) is: only a value with a (, a $ or a : in it was kept, and this one // ran PHP's strlen and let every row pass.
$q = '3 or strlen 5 eq 1';
?>
|
{data 'xs'}[{"n":1},{"n":3}]{/data}{xs where='$n eq 1 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or $n eq {$q}'}{$n} {/xs}
|
|
App: regression/errors - Page: syntax/a_comma_outside_brackets_in_a_where_is_reported
PHP
|
HTML
syntax/a_comma_outside_brackets_in_a_where_is_reported.pad
|
Result
|
|
{data 'people'}[{"name":"Ann","dept":"IT"},{"name":"Bob","dept":"Sales"},{"name":"Cy","dept":"HR"}]{/data}{people where='$dept in "IT", "HR"'}{$name} {/people}
|
|
App: regression/errors - Page: syntax/a_value_spliced_far_into_a_long_where_is_refused
PHP
syntax/a_value_spliced_far_into_a_long_where_is_refused.php
|
HTML
syntax/a_value_spliced_far_into_a_long_where_is_refused.pad
|
Result
|
<?php
// A value spliced into a where= more than 4 KB from the tag's opening brace - past the window // the splice looks back over - is refused as part of the condition: it went in bare and // unrecorded, and the request value 3 or php:abs(-3) eq 3 ran PHP and let every row pass.
$q = '3 or php:abs(-3) eq 3';
?>
|
{data 'xs'}[{"n":1},{"n":3}]{/data}{xs where='$n eq 1 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or 0 or $n eq {$q}'}{$n} {/xs}
|
|
App: regression/errors - Page: syntax/a_where_is_written_in_the_template
PHP
syntax/a_where_is_written_in_the_template.php
|
HTML
syntax/a_where_is_written_in_the_template.pad
|
Result
|
<?php
// A whole where= condition from a variable - a request could fill it - is refused.
$cond = 'php:abs(-1) eq $n';
?>
|
{data 'xs'}[{"n":1},{"n":2}]{/data}{xs where=$cond}{$n}{/xs}
|
|
App: regression/errors - Page: syntax/negative_cannot_turn_round_a_select_where
PHP
syntax/negative_cannot_turn_round_a_select_where.php
|
HTML
syntax/negative_cannot_turn_round_a_select_where.pad
|
Result
|
<?php
// negative over a select table's where: the SQL applied it, so nothing was left to turn // round and the list came out empty, in silence.
$padSelect ['staffSel'] = [ 'db' => 'staff' ];
?>
|
{staffSel where="salary >= 2000", negative}{$name}{/staffSel}
|
|
App: regression/framework - Page: custom/an_application_tag_reads_its_options_as_the_template_gave_them
PHP
custom/an_application_tag_reads_its_options_as_the_template_gave_them.php
|
HTML
custom/an_application_tag_reads_its_options_as_the_template_gave_them.pad
|
Result
|
<?php $v = 'a|b'; ?>
|
[{batches where='$batches | upper eq "C"'}{$batches}{/batches}][{jsonparm '{"a":"x"}'}]{plaincard title='a|b'}{plaincard title=$v}{phpcard title=$v}
|
|
App: regression/framework - Page: data/a_csv_row_shorter_than_its_header_has_the_missing_fields_empty
PHP
data/a_csv_row_shorter_than_its_header_has_the_missing_fields_empty.php
|
HTML
data/a_csv_row_shorter_than_its_header_has_the_missing_fields_empty.pad
|
Result
|
<?php
// A CSV row with fewer cells than the header - a trailing empty cell left out, as a // spreadsheet export does - has every header field, the missing ones empty: Bob's row had // no city, so {$city} on it found the page's own $city, and with no such variable the // page ended "Field '$c' not found".
$city = 'the page city';
?>
|
{data 'people'} name,city Ann,Paris Bob {/data}{data 'c2'} a,b,c 1,2 3,4,5 {/data}[{people}<{$name} lives in {$city}>{/people}][{c2}{$a}{$b}({$c}){/c2}][{people where='$city eq ""'}{$name}{/people}]
|
|
App: regression/framework - Page: data/a_list_of_objects_iterates_as_rows_with_their_fields
PHP
data/a_list_of_objects_iterates_as_rows_with_their_fields.php
|
HTML
data/a_list_of_objects_iterates_as_rows_with_their_fields.pad
|
Result
|
<?php
$decoded = json_decode ( '[{"a":1,"b":"x"},{"a":2,"b":"y"}]' ); $people = [ (object) [ 'name' => 'P1', 'age' => 30 ], (object) [ 'name' => 'P2', 'age' => 40 ] ]; $nested = json_decode ( '[{"addr":{"city":"Paris"},"tags":[{"t":1},{"t":2}]}]' ); $dates = [ new DateTimeImmutable ( '2026-01-02 03:04:05', new DateTimeZone ( 'UTC' ) ) ];
?>
|
{decoded}{$a}{/decoded}|{decoded where='$a gt 1'}{$b}{/decoded}|{decoded}{if $a eq 2}two{/if}{/decoded}|{decoded sort='b DESC'}{$b}{/decoded}|{people}({$name}){/people}|{nested}{$addr.city}:{tags}{$t}{/tags}{/nested}|{dates}{$dates} {/dates}
|
|
App: regression/framework - Page: data/data_named_at_its_close_holds_the_values_not_their_stand_ins
PHP
data/data_named_at_its_close_holds_the_values_not_their_stand_ins.php
|
HTML
data/data_named_at_its_close_holds_the_values_not_their_stand_ins.pad
|
Result
|
<?php
// A {data} named on its closing tag parses its walked content, in which a value's // syntax characters travel as stand-ins - a spliced comma splits no CSV cell, a quote // closes no JSON string. The parsed fields kept them: "Smith, John" was stored with the // comma's stand-in, so {if}, where= and php: calls compared and measured another string.
$people = [ [ 'name' => 'Smith, John' ], [ 'name' => 'x=1' ], [ 'name' => 'say "hi"' ] ];
?>
|
{data} name {people}"{!name}" {/people} {/data 'p'}{data}[{people}{notFirst@people},{/notFirst@people}{"n":"{!name}"}{/people}]{/data 'q'}A[{p}{if $name eq 'Smith, John'}eq{else}ne{/if};{/p}]B[{p where='$name eq "x=1"'}{$name}@else@none{/p}]C[{q}{echo php:strlen($n)};{/q}]
|
|
App: regression/framework - Page: expressions/a_field_piped_into_a_fallback_may_be_missing_in_echo_too
PHP
expressions/a_field_piped_into_a_fallback_may_be_missing_in_echo_too.php
|
HTML
expressions/a_field_piped_into_a_fallback_may_be_missing_in_echo_too.pad
|
Result
|
<?php
// A field piped into a fallback - default(), ??, optional - may be missing under the strict // check in {echo} and inside an expression too, not only in {$x | ...}: they named it missing.
$user = [ 'name' => 'Ann' ]; $xs = [ [ 'n' => 1 ], [ 'n' => 2, 'm' => 5 ] ];
?>
|
[{echo $user.middle | default("-")}][{echo $user.middle | ?? "-"}][{echo $user.middle | optional}][{echo $user.name | default("-")}] {xs where='$m | ?? 0 | @ gt 1'}{$n}{/xs}
|
|
|