Hamizulfaiz

Tech Entrepreneur / System Builder

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

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.

17 Aug 2026 Bisnes Bukan Sekadar Data: Orang Tak Beli Sebab Produk Kita Bagus
Bisnes Bukan Sekadar Data: Orang Tak Beli Sebab Produk Kita Bagus

Ramai founder terlalu fokus pada data dan saiz market. Tapi market besar tak semestinya ada demand. Fahami cara mencari masalah, pain dan demand sebenar.

10 Aug 2026 AI Tidak Salah. Cara Kita Menggunakannya Yang Salah.
AI Tidak Salah. Cara Kita Menggunakannya Yang Salah.

Ramai usahawan menggunakan ChatGPT untuk membina landing page dan sistem. Tetapi tanpa hala tuju yang jelas, AI hanya menghasilkan cadangan generik yang boleh menyebabkan pembangunan tersasar daripada objektif sebenar.

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.

15 Apr 2026 Info Penting Founder Kena Beri Developer Sistem
Info Penting Founder Kena Beri Developer Sistem

Founder selalu gagal explain sistem pada developer. Ini checklist soalan & info penting supaya sistem siap cepat, tepat dan tak overbudget.

24 Feb 2026 Jangan Sibuk Nak Guna AI Kalau Google Drive Pun Berterabur
Jangan Sibuk Nak Guna AI Kalau Google Drive Pun Berterabur

Ramai founder obses dengan AI tapi asas operasi bisnes masih tunggang langgang. Susun proses dulu sebelum labur pada teknologi canggih.

20 Feb 2026 Build vs Buy Software: Panduan Founder Untuk Elak Bazir Duit & Masa
Build vs Buy Software: Panduan Founder Untuk Elak Bazir Duit & Masa

Buat ke beli software? Artikel ringkas untuk founder & startup yang nak buat keputusan betul, elak burn duit, dan bina sistem yang boleh scale.

19 Feb 2026 Macam Mana Saya Debug Production Issue Tanpa Panik, Tanpa Main Teka
Macam Mana Saya Debug Production Issue Tanpa Panik, Tanpa Main Teka

Teknik praktikal debug sistem guna Laravel log dan Nginx log. Selesaikan isu server dengan tenang berdasarkan proses sebenar.

HAMIZULFAIZ