所以我基本上是用 laravel 构建一个没有数据库的宁静客户端。因此,如果有人对如何构建它有任何想法,我将不胜感激。
干杯
我认为你的应用程序更通用和健壮的设计是 MVC 模式,就像标准的 Laravel 应用程序一样。事实上,唯一的区别是模型层不会与数据库交互,而是与 API 交互。
您将不得不忘记 Eloquent 模型并使用经典的面向对象实践(构造函数、访问器...)构建自己的模型层。然后,您将能够处理控制器中的对象,而不是使用 API。如果您想构建足够通用的东西以供重用,您可以采用与 Eloquent 相同的语法并编写如下模型:
<?php
class User {
protected $url = "http://myapi.com/users/"
protected $id;
protected $name;
public function save()
{
$data = json_encode(array(
'id' => $this->id,
'name' => $this->name,
))
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
return true;
}
}
然后,您将能够以$user->save();
与 Eloquent 模型完全相同的行为进行调用。当然,需要很多改进和泛化(为什么不需要一个名为 EloquentAPI 的超类...),但您可以看到这个想法。all()
如果使用方法、和其他几个实现的工作做得很好find()
,您可以轻松地在数据库或 Web 服务实现之间切换。save()
这种方法的另一大兴趣是清理你的控制器并将所有 curl 的混乱放在一个单独的层中。
第二种选择是忘记模型层,直接在控制器中调用 REST API。如果您的应用程序很小并且不需要可扩展,这可能是一个好主意,但是请注意,如果您这样做,您的应用程序的维护可能会很痛苦,例如,如果 REST API 发生变化。
更好的方法是使用 PHP API Wrapper。基本上是 Eloquent 可以使用的 API 包装器: