Нулевые ссылки должны быть удалены из языков OO
Исходя из Java и C # фона, где нормально возвращать нуль из метода, чтобы указать сбой, я пришел к сделать вывод, что нули вызывают много проблем, которых можно избежать. Разработчики языка могут удалить целый класс ошибок, связанных с исключениями NullRefernceExceptions, если они просто удаляют пустые ссылки из кода.
Кроме того, когда я вызываю метод, у меня нет возможности узнать, может ли этот метод вернуть нулевые ссылки, если я на самом деле не копаюсь в реализации. Я хотел бы, чтобы больше языков следовало модели F # для обработки нулей: F # не позволяет программистам возвращать нулевые ссылки (по крайней мере, для классов, скомпилированных в F #), вместо этого требуется, чтобы программисты представляли пустые объекты, используя типы option
. Хорошая вещь в этом дизайне заключается в том, как полезная информация, например, может ли функция возвращать нулевые ссылки, распространяется через систему типов: функции, которые возвращают тип 'a
, имеют тип возвращаемого значения, отличный от функций, которые возвращают 'a option
.
Если я правильно понял вопрос, это может быть то, что вам нужно:
Автоматический выбор соединений с базой данных в CakePHP
Вкратце, переопределите конструктор DATABASE_CONFIG
:
class DATABASE_CONFIG
{
//initalize variable as null
var $default=null;
//set up connection details to use in Live production server
var $prod =
array(
// ...
);
// and details to use on your local machine for testing and development
var $dev =
array(
// ...
);
function __construct ()
{
if(isset($_SERVER['SERVER_NAME'])){
switch($_SERVER['SERVER_NAME']){
case 'digbiz.localhost':
$this->default = $this->dev;
break;
case 'digbiz.example.com':
$this->default = $this->prod;
break;
}
}
else // we are likely baking, use our local db
{
$this->default = $this->dev;
}
}
}
Для базы данных вы можете настроить параметры локального и производственного подключения, а затем создать файл app / app_model.php и включить строку:
class AppModel extends Model
{
var $useDbConfig = 'production';
}
Затем вы можете создать файл app / app_controller.php и проанализируйте домены и сообщите ему, какой dbconfig использовать, а также любые другие настройки core.php с помощью Configure :: write.
Вы можете просто создать дополнительный файл, содержащий единственную директиву Configure :: write ('debug', 0)
*, импортировать его в файл core.php и держите его вне контроля версий. Лучшее из обоих миров.
* или что-то еще, что вам нужно изменить