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.

2 komentarze do “CodeIgniter 4.x pierwsze wrażenia”

  1. Hmmm, wymieniasz zalety twierdząc, że są wadami. Jako powód zdaje się, jest przywiązanie do starszych wersji – tak wnioskuję, bo nie podajesz innego. Wiesz, niektóre rzeczy stały się standardami w świecie frameworków PHP, a w CI4 jako praktycznie nowym frameworku, nie ma powodu do utrzymywania starych nawyków. W końcu mocno został wcześniej z tyłu i długo trwało, zanim pokazała się „czwórka”, a na dodatek w międzyczasie pokazały się inne świetne narzędzia jak np. Symfony 4, więc spora część userów zdążyła się przekwalifikować. W tej sytuacji mały byłby sens zachowywać stare odmienności. Wystarczy jedno „WP” na rynku :).

    Odpowiedz
  2. Hehe fakt. Narzekać, że program wychwytuje literówki? Mam wrażenie, ze jest dużo wolniejszy, ktoś potwierdzi?

    Odpowiedz

Dodaj komentarz

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