PHP code example of ttpn18121996 / simple-repository
1. Go to this page and download the library: Download ttpn18121996/simple-repository library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
namespace App\Repositories\Eloquent;
use App\Models\Province;
use App\Repositories\Contracts\ProvinceRepository as ProvinceRepositoryContract;
class ProvinceRepository implements ProvinceRepositoryContract
{
public function getModelName(): string
{
return Province::class;
}
public function all()
{
return $this->model()->all();
}
}
namespace App\Repositories\WebService;
use App\Repositories\Contracts\ProvinceRepository as ProvinceRepositoryContract;
use Illuminate\Support\Facades\Http;
class ProvinceRepository implements ProvinceRepositoryContract
{
public function getModelName(): string
{
return '';
}
public function all()
{
$response = Http::get('https://api.domain.example/provinces');
return $response->success() ? $response->collection() : collect();
}
}
class UserController
{
public function index(Request $request)
{
$users = $this->userService
->useAuthUser($request->user())
->getList($request->query());
...
}
}
class UserService extends Service
{
public function getList(array $filters = [])
{
if ($this->authUser()->can('view_user')) {
// Do something
}
...
}
}
namespace App\Services;
class UserService extends Service
{
protected array $transferredFields = [
'name' => 'users.name',
'role_name' => 'roles.name',
];
}
namespace App\Services;
class UserService extends Service
{
protected function getTransferredField(string $field): string
{
return [
'name' => 'users.name',
'role_name' => 'roles.name',
][$field] ?? $field;
}
}
namespace App\Services;
use App\Models\User;
class UserService extends Service
{
public function __construct(
public User $user,
) {
}
public function getById($id)
{
return $this->user->find($id);
}
}
namespace App\Services;
use App\Models\User;
use SimpleRepository\Attributes\ModelFactory;
class UserService extends Service
{
#[ModelFactory(User::class)]
public ?User $user = null;
public function getById($id)
{
return $this->getModel('user')->find($id);
}
}
use SimpleRepository\Traits\Safetyable;
class MyClass
{
use Safetyable;
public function doSomething($params)
{
return $this->handleSafely(function () {
// Do something
return $data;
}, 'Do something');
}
}
class UserService extends Service
{
#[ModelFactory(User::class)]
protected ?User $user = null;
public function create(array $data)
{
return $this->handleSafely(function () use ($data) {
$user = $this->getModel('user', $data);
$user->save();
return $user;
}, 'Create user');
}
}
return [
...
'log_channel' => 'stack',
];
namespace App\Services\UserService;
public function sampleMethod()
{
/**
* @var \App\Services\RoleService
*/
$roleService = $this->getService('RoleService');
}
namespace App\Services\UserService;
use App\Services\RoleService;
use SimpleRepository\Attributes\ServiceFactory;
class UserService extends Service
{
#[ServiceFactory(RoleService::class)]
public ?RoleService $role = null;
public function sampleMethod()
{
/**
* @var \App\Services\RoleService
*/
$roleService = $this->getService('role');
}
}