1) Маскировка
Поэтому я предполагаю, что вы пытаетесь заменить все символы перед @
на x
?
You может сделать это с помощью Str
вспомогательного класса
$prefix = Str::before($user->email, '@');
$replacement = str_repeat('x', strlen($prefix));
$domain = Str::after($user->email, '@');
$masked_email = $replacement . '@' . $domain;
2) Презентация
Удобный пакет, который вам может пригодиться Laracasts / Presenter , который выступает в качестве слоя презентации для ваших моделей.
Взяв модель User
в качестве примера, вы можете сделать что-то подобное в UserPresenter
namespace App\Presenters;
use Laracasts\Presenter\Presenter;
class UserPresenter extends Presenter
{
public function maskedEmail()
{
$prefix = Str::before($user->entity->email, '@');
$replacement = str_repeat('x', strlen($prefix));
$domain = Str::after($user->entity->email, '@');
$masked_email = $replacement . '@' . $domain;
return $masked_email ;
}
}
Если вы представляете электронное письмо данного пользователя, вы должны сделать это в вашем шаблоне лезвия:
{{ $user->present()->maskedEmail }}
3) Абстрактные докладчики
Если у вас несколько докладчиков, использующих одни и те же методы, вы можете рассмотреть возможность создания AbstractPresenter
вот так:
AbstractPresenter. php
namespace App\Presenters;
use Laracasts\Presenter\Presenter;
abstract class AbstractPresenter extends Presenter
{
public function maskedEmail()
{
...
}
}
namespace App\Presenters;
use App\Presenters\AbstractPresenter;
class AbstractPresenter extends AbstractPresenter
{
}