IDE и Assignment in condition

Активист

Активист
Команда форума
Раздражает дико эти подчеркивания. Что такого? Или деприкейтет?
PHP:
while ($result = $MySQL->next_row_assoc()) {
			$item = new country();
			$item->setAttributes($result);
			$this->items[] = $item;
		}
В место него конечно можно заюзать do while, но млин как-то криво получится
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Не обращаю на это внимания. Иногда сам так пишу.
 

shureen

Милорд Лось Кристофер
Меня тоже долго раздражало, иногда даже писал как нибудь по извращенному while (false != ($result = $MySQL->next_row_assoc())) чтоб утихомирить свой гнев :) потом в ide убрал подчеркивание и стал счастием сиять :)
 

Krishna

Продался Java
Активист
Ну как бы имена объектов принято с маленькой, а классов с большой. А у тебя всё наоборот.
 

AmdY

Пью пиво
Команда форума
Я таких ошибок уже года три не совершал, даже случайно )))
1. это не значит что не допустишь в будущем
2. это не значит что подобную ошибку не допустит твой коллега, а тебе придётся дебажить.
отключать не следует, это как разрабатывать с отключёнными нотисами.
 

MiksIr

miksir@home:~$
Не помню какое IDE было, но нормально отрабатывало такую конструкуцию, если в двойных скобках, т.е. типа такой хинт указывающий, что мы понимаем, что делаем. И выглядит лучше, чем != false
 

itprog

Cruftsman
1. это не значит что не допустишь в будущем
2. это не значит что подобную ошибку не допустит твой коллега, а тебе придётся дебажить.
отключать не следует, это как разрабатывать с отключёнными нотисами.
c большей вероятностью напишешь $a вместо $b, ++ вместо --, true вместо false, 1 вместо 0 и т.д. Не подчеркивать же весь код теперь.
 

Активист

Активист
Команда форума
Krishna
Незнал. У меня все с маленькой, привычка. $MySQL - единственное исключение, раздражает "mysql" ))
 

Активист

Активист
Команда форума
Неа. Вот почему

PHP:
<?php
final class core  {
	/**
	 * Database Interface
	 * @var databaseInterface
	 */
	private $databaseInterface;
...
...

/**
	 * Get Database Interface
	 * @return databaseInterface
	 */
	public function databaseInterface() {
		if (!$this->databaseInterface instanceof databaseInterface) {
			$this->databaseInterface = new databaseInterface();
		}
		return $this->databaseInterface;
	}

...
...
...

<?php 
class databaseInterface {
	/**
	 * MySQL cnt
	 * @var MySQL
	 */
	private $MySQL;
	
	/**
	 * Return MySQL object
	 * @return MySQL
	 */
	public function MySQL() {
		if (!$this->MySQL instanceof MySQL) {
			$this->MySQL = new MySQL(
										core::getInstance()->cfg()->MySQLServer,
										core::getInstance()->cfg()->MySQLPort,
										core::getInstance()->cfg()->MySQLUsername,
										core::getInstance()->cfg()->MySQLPassword,
										core::getInstance()->cfg()->MySQLDb
										);
		}
		return clone $this->MySQL; 
	}
	
}
?>
...
...
<?php 
class hotelsAggregator {
	/**
	 * Array of hotel items
	 * @var array Array of hotel
	 */
	private $items = array();
	
	public function loadHotels(MySQL $MySQL, $parentCity = false) {
		if ($parentCity !== false && !$parentCity instanceof city) {
			throw new Exception("Ошибка аггрератора ".__CLASS__." (".__METHOD__.") - \$parentCity не является типом city");
		}
		
		$MySQL->query("SELECT * FROM `toursHotels` ORDER BY `position`");
		while ($result = $MySQL->next_row_assoc()) {
			$item = new hotel($parentCity instanceof city ? $parentCity : false);
			$item->setAttributes($result);
			$this->items[$result['id']] = $item;
		}
	}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>вообще лучше итераторами пользоваться
если уж придираться, лучше получать коллекцию объектов, а while оставить внутри php :)
$rows = new \ModelItemsCollection($PDO->query($Statement)->fetchAll(PDO::FETCH_CLASS,'hotel'));
или даже ioc: fetchAll(PDO::FETCH_OBJ,$HotelPrototype)
 
Сверху