Hamizulfaiz

Tech Entrepreneur / System Builder

Tech & Development

Terbaru: Marko PHP Framework. Perspektif Dev Laravel

Published:

Updated:

php fundamental

Aku jumpa satu framework baru: Marko PHP framework.

First impression:

  • macam Laravel + Magento
  • modular gila
  • tapi very backend-first

So aku test sendiri.

Ini bukan teori. Ini apa aku nampak sebagai developer Laravel.


⚑ TLDR

  • Marko = architecture power
  • Laravel = ecosystem power

πŸ‘‰ Marko sesuai untuk sistem besar, modular, dan reusable.


🧠 Apa yang aku nampak

1. Ada β€œModel” tapi bukan Eloquent

Marko ada package: marko/database

Tapi dia guna: πŸ‘‰ Data Mapper pattern

Bukan: πŸ‘‰ Active Record macam Laravel


Contoh Entity

use Marko\Database\Attributes\Column;
use Marko\Database\Attributes\Index;
use Marko\Database\Attributes\Table;
use Marko\Database\Entity\Entity;

#[Table('blog_posts')]
#[Index(columns: ['slug'], unique: true)]
class Post extends Entity
{
    #[Column(primaryKey: true, autoIncrement: true)]
    public int $id;

    #[Column(length: 255)]
    public string $title;

    #[Column(length: 255, unique: true)]
    public string $slug;

    #[Column(type: 'text', nullable: true)]
    public ?string $content = null;
}

πŸ”₯ Interesting part

πŸ‘‰ Entity = schema

Tak ada migration file manual macam Laravel.

Kau run:

marko db:diff
marko db:migrate

Dia auto sync database.


Repository (wajib guna)

use Marko\Database\Repository\Repository;

class PostRepository extends Repository
{
    protected string $entity = Post::class;
}

Compare dengan Laravel

Laravel:

Post::where('slug', $slug)->first();

Marko:

$this->posts->findOneBy(['slug' => $slug]);

πŸ‘‰ Beza besar:

  • Laravel: model handle query

  • Marko: repository handle query


🧠 My take

Kelebihan:

  • clean architecture

  • scalable untuk system besar

  • separation of concern jelas

Kekurangan:

  • lebih banyak boilerplate

  • tak β€œmagical” macam Eloquent


πŸ—οΈ 2. Lebih ringan dari Laravel

Laravel datang dengan semua sekali.

Marko:

  • install ikut keperluan

  • minimal core

πŸ‘‰ Result:

  • lightweight

  • flexible


🧩 3. Modular (ini paling kuat)

Structure:

app/
modules/
vendor/

Priority:

  • app override semua

  • modules tengah

  • vendor paling bawah

πŸ‘‰ Kau boleh override apa saja tanpa hack vendor


🧱 Cara build website (real case)

Kita buat:

  • Home

  • About

  • Blog


πŸ—οΈ Layout (Latte)

layout.latte

<html>
<head>
    <title>{$title ?? 'My Site'}</title>
</head>
<body>

    {include 'partials/navbar.latte'}

    <main>
        {block content}{/block}
    </main>

</body>
</html>

home.latte

{extends 'layout.latte'}

{block content}
    <h1>Home</h1>
{/block}

Controller

use Marko\Routing\Attributes\Get;
use Marko\View\ViewInterface;
use Marko\Routing\Http\Response;

class HomeController
{
    public function __construct(
        private ViewInterface $view
    ) {}

    #[Get('/')]
    public function index(): Response
    {
        return new Response(
            $this->view->render('home.latte')
        );
    }
}

🧩 Komponen (section landing page)

Partial

<section>
    <h1>{$title}</h1>
</section>

Use:

{include 'components/hero.latte', title: 'Hello'}

Component class

class HeroComponent
{
    public function render(): array
    {
        return [
            'title' => 'Build Faster'
        ];
    }
}

πŸ“° Blog system (proper way)

Controller

class BlogController
{
    public function __construct(
        private ViewInterface $view,
        private PostRepository $posts
    ) {}

    #[Get('/blog')]
    public function index(): Response
    {
        return new Response(
            $this->view->render('blog/index.latte', [
                'posts' => $this->posts->findAll()
            ])
        );
    }

    #[Get('/blog/{slug}')]
    public function show(string $slug): Response
    {
        $post = $this->posts->findOneBy(['slug' => $slug]);

        return new Response(
            $this->view->render('blog/show.latte', [
                'post' => $post
            ])
        );
    }
}

⚠️ Frontend (ini real talk)

Marko tak ada:

  • Livewire

  • Inertia

  • Vite setup

πŸ‘‰ Kau kena decide sendiri


3 Cara buat frontend

1. SSR + HTMX

<script src="https://unpkg.com/htmx.org"></script>

<button hx-get="/api/posts" hx-target="#list">
    Load
</button>

2. React/Vue + API

#[Get('/api/posts')]
public function index(): JsonResponse
{
    return new JsonResponse(
        $this->posts->findAll()
    );
}

3. DIY Inertia

return new JsonResponse([
    'component' => 'Home',
    'props' => [
        'posts' => $posts
    ]
]);

πŸ”₯ Apa yang aku suka

  • modular architecture

  • database design clean (entity-driven)

  • scalable untuk SaaS

  • override system padu


😬 Apa yang aku tak suka

  • learning curve sikit tinggi
  • tak banyak ecosystem lagi
  • frontend kena setup sendiri
  • modular bermaksud banyak kena setup

🧠 Conclusion (founder angle)

Laravel:

  • cepat build

  • banyak tools

Marko:

  • long-term architecture

  • reusable modules

  • suitable untuk productize system


πŸš€ Siapa patut guna Marko

Kalau kau:

  • nak bina SaaS

  • nak jual sistem

  • nak modular system

πŸ‘‰ Marko memang ngam

Kalau kau:

  • nak MVP cepat

  • nak CRUD simple

πŸ‘‰ Laravel lagi senang


πŸ’‘ Insight aku

Ini bukan sekadar framework.

Ini direction baru.

πŸ‘‰ Entity = schema
πŸ‘‰ Module = product
πŸ‘‰ Override = flexibility

Kalau kau start awal:

kau boleh build:

  • blog module

  • landing page module

  • agent system module

dan reuse semua.


Kalau aku sekarang:

aku akan guna Marko untuk:

  • system yang nak jual

  • system yang nak reuse banyak kali

bukan untuk semua project.

try framework ni: Marko PHP Framework

 

Marko PHP Framework

Nak buat sistem?

Jom bincang untuk develop sistem yang custom untuk anda.

nak buat sistem bisnes? hubungi saya

Post Berkaitan

05 Feb 2026 Automasi Workflow Bisnes Dengan Laravel Events & Queues
Automasi Workflow Bisnes Dengan Laravel Events & Queues

Automate bisnes anda dengan Laravel Events & Queues. Hantar email, proses komisen, dan urus workflow tanpa stress.

01 Jun 2020 Server - Perkara asas untuk web developer
Server - Perkara asas untuk web developer

Perkara asas mengenai hal-hal server bagi web developer

07 Nov 2018 Apa Itu MVC? Cara Developer Sebenar Guna MVC Untuk Elak Code Jadi Sampah
Apa Itu MVC? Cara Developer Sebenar Guna MVC Untuk Elak Code Jadi Sampah

Cara guna Model, View & Controller (MVC) dalam projek sebenar supaya code bersih, senang dijaga, dan mudah untuk scale bisnes.

12 Jun 2018 Apa Itu Looping Dalam Programming? Faham Cepat + Contoh Praktikal
Apa Itu Looping Dalam Programming? Faham Cepat + Contoh Praktikal

Belajar asas looping dalam programming dengan contoh praktikal dalam coding harian. Bukan sekadar teori, tapi aplikasi sebenar.

12 Oct 2026 Bila Laravel Reverb Sampai, Tapi Event Tak Pernah Trigger
Bila Laravel Reverb Sampai, Tapi Event Tak Pernah Trigger

Pengalaman debug Laravel Reverb bila WebSocket sampai, tapi Echo tak trigger event. Termasuk broadcastAs, polling dan production config.

28 Sep 2026 Bila Dua Sistem Mula Bercantum, Bukan Integration Yang Susah
Bila Dua Sistem Mula Bercantum, Bukan Integration Yang Susah

Bila dua sistem mula diintegrasikan, cabaran sebenar bukan API. Ia tentang business rules, customer, entitlement, card dan data sedia ada.

14 Sep 2026 Aku Dah Outgrow Laravel Valet
Aku Dah Outgrow Laravel Valet

Bila projek makin complex, setup Valet mula tak cukup. Ini workflow aku bila native development mula bertembung dengan Docker.

01 May 2026 Code Refactoring: Insurans Senyap Yang Selamatkan Bisnes
Code Refactoring: Insurans Senyap Yang Selamatkan Bisnes

Code refactoring bantu kurangkan tech debt, percepat debug, dan lindungi bisnes bila sistem live di production.

27 Apr 2026 Software Fundamental Lebih Penting Dari Sekadar Coding
Software Fundamental Lebih Penting Dari Sekadar Coding

Vibe coding nampak mudah, tapi tanpa fundamental software anda sedang bina masalah mahal di production.