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.
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 :).
Hehe fakt. Narzekać, że program wychwytuje literówki? Mam wrażenie, ze jest dużo wolniejszy, ktoś potwierdzi?