Если вы используете OO, вы также можете использовать исключения. Мой ответ - это сочетание A и B:
class DatabaseConnectionException extends Exception {}
class Database {
public function connect($user, $pass, $db) {
//Connection stuff.
if($baduser) {
throw new DatabaseConnectionException('Username (' . $user. ') is invalid.')
}
if($badpass) {
//''
}
}
}
$db = new Database;
try {
$db->connect($user, $pass, $db);
catch (DatabaseConnectionException $e) {
die('I cannot connect to the database:' . $e);
}
Каковы преимущества этого? Я не знаю, но это кажется правильным.
Подробнее об этом можно узнать на http://php.net/exceptions и в Google.
Что касается вашей второй части,
Прежде всего, ваш пример будет рассматривать это скорее как ошибку, чем как «предупреждение», поскольку вы выходите из функции и, следовательно, не создаете запись, если у вас нет заголовка. Это показывает, что метод B имеет недостатки. Таким образом, метод А полностью.