Prologue - формации

Александр Д.
19/09/2018

Данные примеры демонстрируют правильное/неправильное использование кода. 

Для того, чтобы писать хорошие сервисы и системы - необходимо знать базовые принципы как использовать те или иные формации.

Шаблонизация элементов

Ошибка!


<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; - код не будет выполняться в файле.