Данные примеры демонстрируют правильное/неправильное использование кода.
Для того, чтобы писать хорошие сервисы и системы - необходимо знать базовые принципы как использовать те или иные формации.
Шаблонизация элементов
Ошибка!
<h2>Товары</h2>
<div class="products">
<? foreach($products as $product) { ?>
<div class="products__item">
<div class="products__item-title"><?=$product['name']?></div>
<article class="products__item-text">
<?=$product['text']?>
</article>
<div class="products__item-price"><?=$product['price']?> <span>Руб.</span></div>
</div>
<? } ?>
</div>
Верно
<? if($products) { ?>
<h2>Товары</h2>
<div class="products">
<? foreach($products as $product) { ?>
<div class="products__item">
<div class="products__item-title"><?=$product['name']?></div>
<? if($product['text']) { ?>
<article class="products__item-text">
<?=$product['text']?>
</article>
<? } ?>
<? if($product['price']) { ?>
<div class="products__item-price"><?=$product['price']?> <span>Руб.</span></div>
<? } ?>
</div>
<? } ?>
</div>
<? } ?>
Докладываем модифицированные ключи со значениями в массив
<?
$users = $this -> Users -> where(['state=' => 1, 'rating>' => 5]) -> limit(5) -> getRecords();
if($users){
foreach($users as $user){
$user['photo'] = PrImager::resize($user['photo'], 150, 150, true, 'img-43242');
$user['rating'] = $this -> UsersRating -> where(['user_id=' => $user['id']]) -> getRecords('one');
$arData[] = $user;
}
}
?>
Пересобираем массив с новыми ключами
<?
$users = $this -> Users -> where(['state=' => 1, 'rating>' => 5]) -> limit(5) -> getRecords();
if($users){
foreach($users as $user){
$photo = PrImager::resize($user['photo'], 150, 150, true, 'img-43242');
$arData[] = [
'name' => $user['name'],
'photo' => $photo,
'rating' => $this -> UsersRating -> where(['user_id=' => $user['id']]) -> getRecords('one'),
];
}
}
?>
Обработка массива. Перебор.
Ошибка!
<?
$users = $this -> Users -> limit(5) -> getRecords();
foreach($users as $user){
$arData[] = $user;
}
?>
Верно
<?
$users = $this -> Users -> limit(5) -> getRecords();
if($users){
foreach($users as $user){
$arData[] = $user;
}
}
?>
Верно
<?
if($users = $this -> Users -> limit(5) -> getRecords()){
foreach($users as $user){
$arData[] = $user;
}
}
?>
Управление разметкой. Ветвления. Модификация классов.
<div class="images">
<div class="images__item images__item--left">
<img class="images__item-image" src="/upload/image-1.png">
</div>
<div class="images__item images__item--right">
<img class="images__item-image" src="/upload/image-2.png">
</div>
<div class="images__item images__item--left">
<img class="images__item-image" src="/upload/image-3.png">
</div>
</div>
Ошибка!
<? if($images) { ?>
<div class="images">
<? foreach($images as $k => $image) { ?>
<? if(Pr::isEven($k)) { ?>
<div class="images__item images__item--left">
<img class="images__item-image" src="<?=$image?>">
</div>
<? } else { ?>
<div class="images__item images__item--right">
<img class="images__item-image" src="<?=$image?>">
</div>
<? } ?>
<? } ?>
</div>
<? } ?>
Верно
<? if($images) { ?>
<div class="images">
<? foreach($images as $k => $image) { ?>
<div class="images__item <? if(Pr::isEven($k)) { ?> images__item--left <? } else { ?> images__item--right <? } ?>">
<img class="images__item-image" src="<?=$image?>">
</div>
<? } ?>
</div>
<? } ?>
Отклики
Ошибка!
<?
protected function getUsers(){
if(request::multi('action') == 'getUsers') {
$this -> model('Users');
$users = $this -> Users -> limit(5) -> getRecords();
return $users;
}
}
?>
Верно
<?
protected function getUsers(){
if(request::multi('action') != 'getUsers') {
return false;
}
$this -> model('Users');
$users = $this -> Users -> limit(5) -> getRecords();
return $users;
}
?>
Исключения элементов в цикле
Ошибка!
<?
if($items) {
foreach($items as $item) {
if($item['status'] != 'off') {
$arData[] = $item;
}
}
}
?>
Верно
<?
if($items) {
foreach($items as $item) {
if($item['status'] == 'off') {
continue;
}
$arData[] = $item;
}
}
?>
Выборка данных из модели
Ошибка!
<?
$users = $this -> Users -> getRecords();
if($users) {
foreach($users as $user) {
if(!$user['state']) {
continue;
}
$arData[] = $user;
}
}
?>
Верно
<?
$users = $this -> Users -> where(['state=' => 1]) -> getRecords();
if($users) {
foreach($users as $user) {
$arData[] = $user;
}
}
?>
Остановить выполнение кода в файле
<?
$data = getData();
if(!$data) {
return false;
}
?>
После return false; - код не будет выполняться в файле.