İçeriğe atla
TubePress — ücretsiz, kendi sunucunda & aktif olarak geliştirilen
Geliştirici referansı

Mimari

Çekirdek yapı, istek yaşam döngüsü ve TubePress'in izlediği çerçevesiz (no-framework) kurallar.

TubePress, kasıtlı olarak sade tutulmuş bir yazılımdır. Herhangi bir framework, dependency-injection container veya derleme adımı yoktur — yalnızca statik sınıflar kullanan, iyi düzenlenmiş, modern PHP. Bu sayfa, parçaların nasıl bir araya geldiğini açıklar; böylece CMS'i güvenle genişletebilir ve kodunuzun tam olarak nereye ait olduğunu bilebilirsiniz.

Tasarım felsefesi

Üç fikir tüm kod tabanını şekillendirir:

  • Framework yok. Özel statik sınıflar ile saf PHP. Bozulabilecek Composer çalışma zamanı bağımlılıkları yok ve PHP'nin ötesinde öğrenilecek hiçbir şey yok.
  • Sabit bir çekirdek, ücretsiz eklentiler. Çekirdek güncellenebilir olup doğrudan düzenlenmemelidir. Özelleştirdiğiniz her şey temalar, eklentiler veya ayarlar içinde yer alır.
  • Ölçeklenebilir ve ucuz barındırmaya dayanıklı tasarım. Ağır işler parçalara bölünür ve yerleşik bir pseudo-cron sayesinde sistem crontab'ına gerek kalmaz.

Dizin yapısı

Depo, çekirdeği (sabit, güncellenebilir) eklentilerden (kullanıcılar tarafından yüklenen ve kaldırılan) ayırır.

CORE — never modified by themes/plugins, replaced by updates
  config/            App config, DB config, install marker
  src/Core/          App, Database, Router, Pagination, CronManager,
                     and the managers (Seo, Transcode, Update, …)
  src/Auth/          Auth, Gate (permissions)
  src/Models/        Video, Category, Tag, Performer, Channel,
                     Comment, Page, User, Setting, Favorite, History
  src/Admin/         Admin CRUD controllers
  src/Front/         Public-facing controllers
  src/Install/       InstallController, Migrator
  src/Helpers/       Format, FileUpload, Sanitizer, Slug, SEO,
                     Player, RateLimiter, ImpressionTracker
  src/Plugin/        HookSystem, PluginInterface, PluginManager
  src/Theme/         ThemeManager, ThemeRenderer
  sql/               Numbered migrations (001_…sql → 0xx_…sql)
  templates/admin/   Admin panel templates (layout + partials)
  templates/install/ Install wizard templates
  public/            Web root — index.php, uploads/, symlinks
  cron/              Optional CLI scripts for a system crontab

ADD-ONS — installable / removable by users
  themes/            Theme directories (active: "simply")
  plugins/           Plugin directories (agegate, backup, ctr)
  lang/              Translation files (en, fr, de, es, ar, …)
Özelleştirmek için çekirdeği hiçbir zaman düzenlemeyin. src/, config/, sql/ veya templates/ altındaki her şey bir güncelleme tarafından üzerine yazılabilir. Değişikliklerinizi bir tema veya eklentiye koyun; böylece güncellemelerden etkilenmezler.

İstek yaşam döngüsü

Her istek, aynı sırayla public/index.php üzerinden akar:

  1. PHP sürüm kontrolü. config/php-guard.php önce çalışır — desteklenmeyen bir PHP sürümünde modern sözdizimi yüklenmeden önce önyüklemeyi durduran, ayrıştırma güvenli bir kapıdır.
  2. Önyükleme. config/app.php otomatik yükleme, oturum ve çekirdek servisleri kurar.
  3. Kurulum kontrolü. App::isInstalled() false ise (yani config/installed.php yoksa), istek kurulum sihirbazına yönlendirilir ve başka hiçbir şey yüklenmez.
  4. Rota kaydı. Admin, API ve ön yüz denetleyicilerinin her biri, statik bir ::routes() yöntemiyle rotalarını kaydeder.
  5. Dağıtım. Router::dispatch(), URL'yi eşleştirir ve denetleyici metodunu çağırır.
  6. Render. Admin eylemleri templates/admin/* şablonlarını render eder; ön yüz eylemleri, aktif temayı ThemeRenderer::render() aracılığıyla render eder.
  7. Render sonrası işler. Gösterimler temizlenir ve CronManager::run() zamanı gelmiş görevleri tetikler.

Ön yüz sayfa rotaları (statik sayfalar için /{slug} yakalama rotası) en son kaydedilir; böylece gerçek rotaları hiçbir zaman gölgelemez.

Çekirdek kurallar

KavramKural
DenetleyicilerAdminXxxController::routes() / FrontXxxController::routes() rotaları kaydeder; metodlar istekleri işler.
ModellerStatik metodlar: Video::find($id), Video::all($filters), Video::create($data).
VeritabanıDatabase::fetchOne(), fetchAll(), insert(), update(), delete(), count(), transaction().
RouterRouter::get(), Router::post(), Router::param('name'), Router::redirect().
Admin şablonlarıRouter::render('admin/videos', […])templates/admin/videos.php (layout.php + bir _videos.php parçacığı yükler).
Ön yüz şablonlarıThemeRenderer::render('home', […]) → aktif tema şablonu + layout.php.
Migrasyonlarsql/NNN_name.sql; kurulum ve güncelleme sırasında Migrator::run() tarafından otomatik çalıştırılır.
KancalarHookSystem::doAction('event') ve HookSystem::applyFilter('filter', $value).

Web sunucusu desteği

TubePress hem Apache hem de Nginx üzerinde çalışır:

  • Apache.htaccess dosyaları URL yeniden yazımını ve dizin korumasını yönetir.
  • Nginxalias direktifleri varlıkları sunar, deny all kuralları ise hassas yolları korur.
  • Sembolik bağlantılarpublic/themes → ../../themes ve public/templates → ../../templates; PHP kaynaklarını web kökü dışında tutarken tema ve admin varlıklarını açığa çıkarır.

Web kökü her zaman public/ dizinidir. Hassas her şey — config/, src/, sql/, storage/ — bunun dışında yer alır ve sunucu düzeyinde ayrıca engellenir.

Nerede özelleştirme yapılır

Yapmak istediğiniz…Yapılacak yer…
Görünüm & düzeni değiştirmekBir tema (ya da kodsuz değişiklikler için Görünüm ayarları)
Özellik veya entegrasyon eklemekAksiyon & filtreler kullanan bir eklenti
Kod yazmadan davranışı değiştirmekAyarlar
Zamanlanmış iş eklemekBir eklentiden CronManager

Sonraki adımlar

Hâlâ takıldınız mı?

Kontrol panelinizden bir destek talebi açın, ekibimiz size yardımcı olacaktır.

Canlı demoyu deneyin → TubePress'i indirin →