Tartalomjegyzék

< PHP

Kódszervezés

Bevezetés

Minél nagyobb egy projekt, és/vagy minél hosszabb az életciklusa, a kód könyvtárakba szervezése annál fontosabb. Sokan sokféle könyvtár struktúrát, különféle elnevezési szokássokkal szoktak ajánlani. Itt most kiragadtam néhányat, hogy mindenki válogathasson kedvére.

Példa 001

approot/
   |--inc/
   |--dao/
   |--scripts/
   |--styles/
   |--img/
   |--static/
   |--caches/
   |--templates/
   `--index.php

Példa 002

projekt1/
  |--css/
  |--img/  
  |--js/  
  |--functions/
  |--views/
  `--index.php

Példa 003

projekt1/
   |--web/
   |   |--css/
   |   |--js/
   |   |--images/
   |    `--index.php
   |--config/
   `--lib/

Ebben a példában van egy web könyvtár, amely publikus az látógatók számára. A config és a lib, azonban nem, mivel a web könyvtár a a webhely gyökérkönyvtára.

projekt1/
   |--web/
   |   |--css/
   |   |--js/
   |   |--images/
   |   `--index.php
   |--config/
   |--controller/
   |--helpers/
   |--lib/
   |--modules/
   `--views/

Példa 004

application/
  |--config/
  |--css/
  |--helpers/
  |--images/
  |--js/
  |--lib/
  |--modules/
  |    `--blog/
  |       |--controllers/
  |       |--models/
  |       `--views/
  |--views/
  `--index.php    

Példa 005

Vannak olyan típusú szerkezetek, ahol azt mondják legyen egy „app”, vagy hasonló könyvtár ide kerüljenek a háttérben (backend) elhelyezhető részek. Naplózás, beállítások, könyvtárak stb. Legyen egy „public” vagy „web”, vagy hasonló könyvtár ahova a nyilvános részeket tesszük, úgymint: CSS, JavaScript, stb. Ha pedig szükséges legyen egy „test” könyvtár a tesztekhez.

projekt1/
   |--app/
   |   |--lang/
   |   |--routes/
   |   |--src/
   |   `--templates/
   |--test/
   `--web/
       |--assets/
       |--images/
       |--scripts/
       |--styles/
       `index.php

Példa 006

projekt1/
  |--app/
  |   |--controllers/
  |   |--models/
  |   `--views/
  |--public/
  |   |--css/
  |   |--img/
  |   |--js/
  |   `--index.php
  `--tests/

Példa 007

projekt1/
   |--htdocs/
   |    |--css/
   |    |--img/
   |    `--js/
   `--resources/
        |--library/
        |--templates/
        `--config.php

Példa 008

projekt1/
   |--public_html/
   |    |--css/
   |    |--img/
   |    |   |--content/
   |    |   `--layout/
   |    `js/
   `resources/
        |--library/
        |--templates/
        `--config.php

Pelda 009

projekt01/
   |--controller/
   |    |--viselkedes.js
   |    `--kapcsolas.php
   |--model/
   |    |
   |    `--uzletiLogika.php
   `--view/
        |--index.html
        |--style.css
        `--updates.js

Pelda 010

projekt01/
   |--bin/
   |--config/
   |--docs/
   |--public/
   |--resources/
   |--src/
   |--templates/
   |--tests/
   |--translations/

Pelda 011

projekt01/
   |--database/
   |    `--projekt01.sql
   |--draft/
   |    `--projekt01.dia
   |--src/
   |   |--css/
   |   |    `--style.css
   |   |--images/
   |   |--includes/
   |   |     |--config.php
   |   |     `--db.php
   |   |--templates/
   |   |     |--foot.tpl
   |   |     |--head.tpl
   |   |     |--index.tpl
   |   |     |--mas.tpl
   |   |     |--menu.tpl
   |   |     `--valami.tpl
   |   |--index.php
   |   |--mas.php
   |   `--valami.php
   `--tests/
        `--valami.phpt

Pelda 012

projekt01/
   |--database/
   |    `--projekt01.sql
   |--draft/
   |    `--projekt01.dia
   |--src/
   |   |--css/
   |   |   `--style.css
   |   |--images/
   |   |--includes/
   |   |     |--config.php
   |   |     `--db.php
   |   |--templates/
   |   |     |--foot.tpl
   |   |     |--head.tpl
   |   |     |--index.tpl
   |   |     |--mas.tpl
   |   |     |--menu.tpl
   |   |     `--valami.tpl
   |   |--views/
   |   |    |--mas.php
   |   |    `--valami.php
   |   `--index.php
   `--tests/
        |--mas.phpt
        `--valami.phpt

Pelda 013

projekt01/
   |--database/
   |--draft/
   `--web/
       |--config/
       |     `--config.php
       `--htdocs/
             |--includes/
             |     `--db.php
             |--templates/
             |--views/
             `--index.php

Függelék

Konfigfájl elhelyezése

/home/
    virtual-www/
        zold.and/
            htdocs/
                index.php
            config/
                mysql.json
$_SERVER['DOCUMENT_ROOT'] = /home/virtual-www/zold.and/htdocs/

Hibák mutatása

A hibák mutatása, esetleg a config.php végére:

ini_set("error_reporting", "true");
error_reporting(E_ALL|E_STRCT);

Praktikák

A konfigfájl olvasása:

require_once(realpath(dirname(__FILE__) . "/../config.php"));

Az alapkönyvtár beállítása:

define('ROOT', str_replace('\\', '/', __DIR__));

Esetleg:

define('LIBRARY_PATH', ROOT . '/application/libraries');
include(LIBRARY_PATH . '/valami.php');

Hibakezelés:

ini_set("error_reporting", "true");
error_reporting(E_ALL|E_STRCT);

Konfigurációs fájl

config.php
<?php
 
$app['baseUrl'] = "http://pelda.hu";
$app['resources'] = "/path/to/resources"
$db['name'] = "nev1";
$db['user'] = "felhasznalo";
$db['pass'] = "titok";
$db['host'] = "localhost";
config.php
<?php
 
$config = array(
    "urls" => array(
        "baseUrl" => "http://pelda.hu"
    ),
    "paths" => array(
        "resources" => "/path/to/resources",
        "images" => array(
            "content" => $_SERVER["DOCUMENT_ROOT"] . "/images/content",
            "layout" => $_SERVER["DOCUMENT_ROOT"] . "/images/layout"
        )
    ),
    "db" => array(
        "db1" => array(
            "name" => "nev1",
            "user" => "felhasznalo",
            "pass" => "titok",
            "host" => "localhost"
        )
    )
);

Linkek

Könyvtár struktúra:

Keretrendszerek:

Függőségkezelő:

Konfigfájlok: