CodeIgniter 4.x pierwsze wrażenia

Przy okazji nowego stabilnego wydania wziąłem się za przepisanie bardzo prostego projektu, który składał się z jednego formularza, odrobiny manipulacji bazą danych i dołączenia kilku innych drobnych elementów.

Co mi się podoba

Modele posiadają prostego CRUD’a – wystarczy w konfiguracji podać nazwę tabeli i kilka parametrów i można już korzystać z metod typu $model->find($id) czy $model->delete($id)z użyciem soft delete. Przykładowy konstruktor modelu wygląda tak:

<?php namespace App\Models;

use CodeIgniter\Model;

class ContactModel extends Model
{
protected $table = 'contacts';
protected $primaryKey = 'id';

protected $returnType = 'array';
protected $useSoftDeletes = true;

protected $allowedFields = ['name', 'company', 'email', 'phone'];

protected $useTimestamps = false;
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';

protected $validationRules = [];
protected $validationMessages = [];
protected $skipValidation = false;
}

Dalej – w końcu rozwiązano odwieczny problem layoutów. Kombinowanie i klejenie nagłówka i stopki strony, czy bardziej lub mniej powtarzalnych elementów szablonu już nie jest tak upierdliwe. Można zdefiniować sobie szablon domyślny strony, oraz co i jak ma się ładować i gotowe. Szybko i bezboleśnie.

Co mi się nie podoba

Rozumiem dlaczego to zrobiono, ale naprawdę nie podoba mi się separacja folderu public i pozostałych folderów. Rozumiem kwestie bezpieczeństwa, ale… nie jest to specjalnie wygodne szczególnie na dzielonych hostingach. Trzeba kombinować z .htaccess jeśli chce się wszystko upchać „tak jak było”.

Konfiguracja dla różnych wersji środowiska (staging, production) wylądowała w pliku .env czyli takim pliku „.ini” gdzie wpisuje i nadpisuje sie konfigi. Niby jest ok, ale jakoś bardziej podobało mi się nadpisywanie w folderach.

No i ostatnia sprawa – wrażliwość na wielkie i małe litery. Mały błąd w nazwie i model contactModel.php nie załaduje się przez $contactModel = model('ContactModel'); chyba, że bazowy system jest niewrażliwy na znaki.

Podsumowanie

Tyle wrażeń z pierwszego „projektu”. Ogólne wrażenia pozytywne, sporo małych drobnych zagwozdek. Myślę, że po latach zastoju CI3 mamy w końcu nowoczesny framework gotowy do tego, żeby konkurować z Laravelem czy Symfony.

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.