High speed-dev: A minute to be up & running
neoan

neoan @sroehrl

About: Passionate generalist conquering the web one project at a time. Whether authoring libraries for node, JS, PHP, or Rust, I am always on the lookout for better solutions to common problems.

Location:
USA
Joined:
Oct 1, 2019

High speed-dev: A minute to be up & running

Publish Date: Aug 17 '22
0 0

No, it doesn't run on PHP 7.2!

The neoan-core Lenkrad doesn't play the compatibility game. Being backward compatible to older PHP versions or playing nicely with a plethora of ecosystems is a challenge that not only slows down development, but results in verbose usage and unoptimized core code.

I wanted to have a framework for the next generation. I wanted to finally have a framework that let's me write business logic the way I want it to behave.

Let's compare:

In Laravel, I need a migration and a model to make the Eloquent ORM work:

the migration


use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('password');
            $table->string('email')->unique();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('users');
    }
};


Enter fullscreen mode Exit fullscreen mode

And the model

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{

    protected $table = 'users';
}
Enter fullscreen mode Exit fullscreen mode

We might be used to this, but what we really want to write is:


class User extends Model
{
   #[IsPrimaryKey]
   public readonly int $id;
   public string $name;

   #[Transform(Hash::class)]
   public string $password;

   #[IsUnique]
   public string $email;

   use Timestamps;
}

Enter fullscreen mode Exit fullscreen mode

The advantage is not only easier reference and less verbose code. Your IDE will be able to better help you with navigating objects through auto-completion:

$user = new User();
$user->name = 'Adam'; // name was suggested, as it's a property of the model class
...

Enter fullscreen mode Exit fullscreen mode

Interested?

If you have PHP8.1 and interested in seeing how a framework could actually make your life easier, try it out:

composer create-project neoan.io/starter-project [my-app]

The package is light in dependencies and up & running in seconds. Feedback highly appreciated!

Comments 0 total

    Add comment