Как отловить ошибку в расширяемом классе?

Sandr

Новичок
Как отловить ошибку в расширяемом классе?

есть конструкция
PHP:
$myClass = new firstClass();
if(!$myClass)
  echo "Ошибка";

class firstClass extends secondClass{
	public function __construct()
	{
		parent::__construct();
	}
}

class secondClass{
	public function __construct()
	{
                 /* некое условие возвращающее ошибку */
		if (****)
                    return false;
	}
}
как отловить ошибку возвращаемую расширяемым классом?
 

Sandr

Новичок
конструктивно ,)
я понимаю что все просто но туплю - Пятницо однако
 

zerkms

TDD infected
Команда форума
Sandr
это реакция на return в конструкторе.
конструктор может возвращать только объект текущего класса.
 

Духовность™

Продвинутый новичок
как отловить ошибку
подозреваю, что http://www.php.net/manual/en/language.exceptions.php


public function __construct()
{
/* некое условие возвращающее ошибку */
if (****)
return false;
}
в конструкторе не должно быть много логики, а тем более каких-то ошибочных ситуаций. Приведи пример реального класса.
 

Sandr

Новичок
конструктор может возвращать только объект текущего класса.
Достаточно - понял ,)

-~{}~ 22.05.09 17:51:

PHP:
	//
	// Constructor
	//
	function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
	{

		$this->persistency = $persistency;
		$this->user = $sqluser;
		$this->password = $sqlpassword;
		$this->server = $sqlserver;
		$this->dbname = $database;

		if($this->persistency)
		{
			$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
		}
		else
		{
			$this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
		}
		if($this->db_connect_id)
		{
			if($database != "")
			{
				$this->dbname = $database;
				$dbselect = @mysql_select_db($this->dbname);
				if(!$dbselect)
				{
					@mysql_close($this->db_connect_id);
					$this->db_connect_id = $dbselect;
				}
			}
			@mysql_query("SET NAMES utf8", $this->db_connect_id);
			return $this->db_connect_id;
		}
		else
		{
			return false;
		}
	}
 

zerkms

TDD infected
Команда форума
return false;
заменить на
throw new connectToDBException('текст');

ps: почему у тебя конструктор так странно называется?
 

Духовность™

Продвинутый новичок
Sandr
разбей все это на методы одного класса - database.

1. Конструктор только принимает параметры и ничего более (хотя лучше сделать сингелтон)
2. Коннектом занимается функция connect()
3. Бд выбирает функция select_db
Ошибки выбрасываются с помощью исключения.

Это уже на вскидку получилось 3 метода! А у тебя, судя по коду, это все в одном методе торчит.
 
Сверху