Convenções v4
v4Padrões oficiais de namespace, nomenclatura e organização. Seguir essas regras mantém o projeto consistente e compatível com o autoload PSR-4.
Classes e namespaces — tudo lowercase
No MuCRM v4, classes, namespaces e facades usam snake_case. Não use PascalCase como em outros frameworks.
| Errado | Correto |
|---|---|
| MUCRM\Engine\Support\Facades\Log | MUCRM\engine\support\log |
| MUCRM\Engine\Support\Facades\DB | \DB ou MUCRM\engine\support\facades\db |
| MUCRM\Engine\Support\Request | MUCRM\engine\support\request |
| URI::get() | uri::get() |
| User::find() | customer::find() (classe snake_case) |
use MUCRM\engine\support\facades\uri;
use MUCRM\engine\support\{request, responder};
use MUCRM\engine\support\log;
\DB::transaction(fn () => true);
log::info('Pedido criado');
uri::get('/loja', [web_handler::class, 'index']);Namespaces
Composer mapeia MUCRM\ → app/.
| Área | Namespace | Caminho |
|---|---|---|
| Engine | MUCRM\engine\... | app/engine/... |
| Handlers HTTP | MUCRM\http\... | app/http/... |
| Módulos | MUCRM\modules\{nome}\... | app/modules/{nome}/... |
| Serviços | MUCRM\shared\... | app/shared/... |
namespace MUCRM\modules\billing\handlers;
namespace MUCRM\modules\billing\models;
namespace MUCRM\http\web\handlers;
namespace MUCRM\shared\services;Nomenclatura
| Tipo | Padrão | Exemplo |
|---|---|---|
| Classe / arquivo | snake_case | web_handler.php |
| Handler | estende MUCRM\http\handler | panel_handler |
| Model | estende schema | billing_plan |
| View | notação com ponto | index.mucrm.php |
| Rota nomeada | dot notation | user.profile.show |
namespace MUCRM\modules\billing\handlers;
use MUCRM\engine\support\{request, responder};
use MUCRM\http\handler;
class web_handler extends handler
{
protected string $layout = '_layouts.app';
public function index(request $req, responder $res)
{
return $this->view('Billing.index', compact('plans'))
->title('Planos');
}
}Relacionamentos ORM
| v4 | Legado (removido) |
|---|---|
| has_one() | attach_one() |
| has_many() | attach_many() |
| belongs_to() | related_to() |
| belongs_to_many() | related_to_many() |
Use snake_case nos métodos e no acesso — não camelCase.
// Model
public function profile_data()
{
return $this->has_one(profile_data::class, 'user_id', 'id');
}
// Uso
$user->profile_data;
auth()->load('profile_data');Helpers em namespaces
Dentro de namespace MUCRM\..., chame helpers globais com \ na frente:
\config('app.server.name');
\logged();
\to('user.panel');Sem o prefixo, o PHP procura a função no namespace atual e falha.
Checklist de migração v3 → v4
- Namespace
MUCRM\modules\{nome}\... - Controllers → handlers
- Views: PHP puro com
e(),csrf(),method() - Relações:
has_one,has_many,belongs_to - Rotas: facade
uri:: - Auth:
logged()/account() - Config:
config/na raiz (nãobootstrap/config/) - Temas:
themes/com pastas_layouts/e_components/(nãoresources/views/)