Nasıl uygulama yolları tanımlarsınız?

2 Cevap php

Ben bu gibi küresel sabitleri kullanıyorum:

/project
    /application
        bootstrap.php
    /public
        index.php

index.php

  • tanımlar PUBLIC_PATH ve APPLICATION_PATH
  • APPLICATION_PATH çağırır. bootstrap.php

bootstrap.php

  • Library_Path, MODULES_PATH, TEMP_PATH, CONFIG_PATH tanımlar ...
  • gerçek iş yapar

Ayrıca ben bunu yapmak için daha iyi bir yolu olup olmadığını sormak istiyorum?

2 Cevap

Eğer uygulama halka açık değil mi? Neyse, normalde sadece (genellikle index.php) benim gibi bu ön denetleyicisi bir ROOT sabiti define:

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

Veya __DIR__ kullanılamaz PHP'nin eski sürümleri:

define('ROOT', str_replace('\\', '/', dirname(__FILE__)));

Iç yapı asla değişmez çünkü ben sadece böyle bir şey yapın:

include(ROOT . '/application/libraries/Email.php');

Yerine:

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

Daha az kirlilik. =)

Dizin ağacının göre:

Bu benim temelde index.php veya bootstrap.php yerleştirebilirsiniz, PHP komut dosyası yüklemek için kullanabileceğiniz istiyorsunuz biridir

define("PROJECT_DISK_PATH", str_replace('\\', '/', dirname(dirname(__FILE__))) . '/');
/*
Server variables $_SERVER['PHP_SELF'] and $_SERVER['SCRIPT_FILE_NAME'] are both USELESS to 
accomplish this task because they both return the currently executed script and not this included file path.
*/

Sonra PHP komut bunu:

include(PROJECT_DISK_PATH . 'path/to/your/script/somescript.php')

Ve bu ben SİTELERİNDE JS / CSS komut dosyası yüklemek için kullanabileceğiniz istiyorsunuz olanlar:

define("PROJECT_DOCROOT_PATH", '/' . substr(PROJECT_DISK_PATH, strlen($_SERVER['DOCUMENT_ROOT'] . '/')));
define("PROJECT_HTTP_PATH", "http://" . $_SERVER['HTTP_HOST'] . JPL_DOCROOT_PATH);

Yani sayfanızda yapabileceğiniz:

   <script type="text/javascript" src="<?php echo PROJECT_DOCROOT_PATH; ?>path/to/your/script/somescript.js"></script>