CW(1) - INDEX, definice databáze a SINGLETON - Soubor, kterým to celé začíná
Soubor index, v našem případě index.php je ten, který se automaticky načítá, když uživatel načte doménu a server se podívá do kořenového adresáře webu. Když se tam nalézá soubor index, zobrazí jeho obsah.
Na linuxových serverech se jmenuje index.php (a mnoho kombinací přípon).
Na windowsovských serverech je to default.asp.
Toto je tedy výchozí stránka a sem musíme umístit iniciační skript, který začíná naši PHP aplikaci.
Odtud jsou volány další funkce a odsud vedou odkazy na další adresy (ne nutně soubory) webu.
Po vzoru php aplikací z doby před r. 2000 by šlo předávat proměnné mezi jednotlivými skripty třeba pomocí superglobálního pole (session), nebo pomocí odkazů odkaz?proměnná=hodnota, ale jak jsem poslední dobou odpozoroval od všech PHP frameworků, dnes se užívá architektura singleton, tedy jediný vstupní soubor do něhož se načítají další části objektového PHP, rozšíření tříd, takže výsledný dojem je ten, jako by celý web byl tvořen jediným programem (souborem).
V teorii návrhových vzorů (design patterns) je singleton jediný přístupový bod k celé aplikaci, resp. globální přístupový bod k objektům. "Jeho úkolem je zajistit existenci pouze jediné instance určité třídy a zároveň poskytnout globální přístup k ní."
Jelikož pro pouhé vysvětlení principu zde jednodušeji používám funkční přístup, znamená to, že v indexu definuji přístup k databázi, se kterou potom celý web pracuje a mám zde základní vlákno (MAIN) funkcí, které web dělají. Každý požadavek z prohlížeče na stránku mého webu prochází touto posloupností v tomto souboru.
Nejstručnější princip tedy zní:
<?php
global $pdo, $permalink;
Definuji zde globální proměnné, které budou stejné takřka všem dalším souborům a adresám webu, jako cesta (popř. část cesty) do složky k CSS šablonám:
$stylesheetURL = "http://" . $_SERVER['HTTP_HOST'] . "Templates/CSSsoubor.css";
Definuji databázi pomocí PDO:
$pdo = new PDO("sqlite:CONTENT.sqlite") or die("není DB");
//require '#0DB.engine.php'; nebo bych odsud odkázal na soubor s její definicí
Odkazuji odsud na další klíčové php soubory, ve kterých mám nadefinovány klíčové funkce:
require '#1ARTICROUTER.engine.php';
require '#2necoNAZEV.engine.php';
require '#3necoNAZEV.engine.php';
require '#4PRVKY.engine.php';
Odsud už běží hlavní program, který spouští celý můj engine webu:
(volání funkcí)
//##MAINprogram - - 1ARTICrouter
articleROUTER();
najitCLANEK();
nasajDATA();
zjistiTYP(); //přesměrovává na view
Tak to tedy celé začíná. Tolik ke hlavnímu spouštěči celého webu.
Upozorňuji že nejde o hotový program, který vám bude hned fungovat metodou copy&paste, jsou to spíš logicky řazené útržky kódu, které vás mají navést na vytvoření vlastních. Jde spíše o ukázku algoritmů, jejichž realizaci v PHP nebo čemkoli jiném nechávám na čtenáři.
Daleko fundovanější zdroje
Krásný článek o singletonu v češtině:
https://phpfashion.com/je-singleton-zlo
Kompletní příklady co v singletonu bude:
https://phpenthusiast.com/blog/the-singleton-design-pattern-in-php
Další design patterns v PHP:
https://phptherightway.com/pages/Design-Patterns.html