如何在PHP7中使用返回类型a类 我试过下面的代码。但在本例中,当发生错误时,我返回一个空白对象
是否可以写入返回空白对象?当返回类型为class时如何在PHP7中使用返回类型a类 我试过下面的代码。但在本例中,当发生错误时,我返回一个空白对象,php,Php,是否可以写入返回空白对象?当返回类型为class时 public static function createBook($book_data): BookModel { try { $book = new BookModel; $book->fill($book_data); $book->save(); return $book; } catch(\Exception $e) {
public static function createBook($book_data): BookModel
{
try {
$book = new BookModel;
$book->fill($book_data);
$book->save();
return $book;
}
catch(\Exception $e) {
log::error($e->getMessage());
$book = new BookModel;
return $book;
}
}
我认为这取决于(在本例中)抛出异常时要执行的操作
- 如果你想让应用程序知道出了什么问题,你应该返回
。返回一个空的false
基本上就是说一切都很顺利,检查某个对象的属性是否为空要比检查该对象的属性是否为空容易得多BookModel
- 如果它真的不介意书是空的(也就是说,你的代码并不认为书总是满的),我认为返回一本空的书是可以的。不过,我会稍微更改代码:
public static function createBook($book_data): BookModel { $book = new BookModel(); try { $book->fill($book_data); $book->save(); } catch(\Exception $e) { log::error($e->getMessage()); } return $book; }
- 若您使用数据库的自动增量ID,那个么它就不会存在于这个空模型上
- 不填写任何其他必填字段。(例如,没有作者和内容的书?)
public static function createBook($book_data): BookModel
{
$book = new BookModel;
$book->fill($book_data);
$book->save();
return $book;
}
当然可以。您的
BookModel
是该类的有效对象,无论是否已填充。现在,如果您假定对象已“填充”,那么您自己的代码可能会在该对象上绊倒。但这不是泛语言的问题,而是您的实现不够健壮。IMHO-在本例中返回对象的实例是不正确的。调用例程如何知道是否创建了图书?对于其他程序员来说,假设他有一本书的实例,一切都正常工作是很容易的。例外情况是否重要——是否应该向上传递——取决于你的应用程序是如何构建的。
public static function createBook($book_data): BookModel
{
$book = new BookModel;
$book->fill($book_data);
$book->save();
return $book;
}