Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] define - przypisywanie include do stalej
Forum PHP.pl > Forum > Przedszkole
renderman
Witam smile.gif

Staram się napisać malego cms'a i natknąłem się na przeszkodę.
Ładując w każdej podstronie jakiś tam element / moduł np box.inc.php zawsze dodaje przy kazdej stronie

  1. <?php
  2. $modul_box = 'modul_box/box.inc.php ';
  3.  if ( file_exists($modul_box) && is_readable($modul_box)  )  {include($modul_box);}
  4.  else
  5.  echo  'Nie znaleziono - box' ;
  6. ?>


Chcialbym to sobie uprościć przez zdefiniowanie stalych w jakimś osobnym stałe.inc.php
O ile wiem jak napisac
  1. <?php
  2. define('MODUL_BOX', 'nazwa modulu');
  3. ?>

i wyświetlić go
  1. <?php
  2. echo ''.MODUL_BOX;
  3. ?>

To nie potrafie przypisac zamiast nazwy_modułu kodu ktory podałem wcześniej

Chciałbym w jednym pliku zdefiniowac pod każdą STAŁĄ by ładowł się konkretny plik ale chcialbym też w pierwszej kolejności zweryfikować czy istnieje i ewentualnie zwrocic komuinikat według schematu

MODUL - modul_reklama.inc.php
MODUL_2 - modul_szukaj.inc.php
itd..
a pozniej je wyświetlić podając tylko .MODUL...
kantek
Nie wiem czy dobrze zrozumiałem, ale zrobiłbym to (jeżeli nie robisz tego obiektowo) jakąś funkcją, która pobiera 1 parametr

function load_modul($prametr){...}

na podstawie tego parametru wykonywany jest twój kod i includowany odpowiedni plik (moduł)
np. w
  1. <?php
  2. switch($parametr)
  3. {
  4.  case 'MODUL':
  5.   include "modul_reklama.inc.php";
  6.  break; ...
  7. }
  8. ?>



potem sobie tylko wywołujesz load_modul('MODUL');
a nawet możesz zrobić funkcję która będzie ładować kilka modułów

Pozdrawiam
#luq
Szczerze to się pogubiłem. Rozwiązanie obiektowe specjalnie dla zwykłego includowania?

  1. <?php
  2. define( MODULE_1, 'module1.php' );
  3.  define( MODULE_2, 'module2.php' );
  4. ?>


  1. <?php
  2. // funkcja includujaca
  3.    function includeModule( $file ){
  4.         if ( file_exists( $file ) && is_readable( $file ) ){
  5.             require_once( $file );
  6.             return true;
  7.         }
  8.          else
  9.             return false;
  10.         }
  11.    }
  12. ?>

  1. <?php
  2. if( !includeModule( MODULE_1 ) ){
  3.    echo 'nie znalezionu pliku: '.MODULE_1;
  4. }
  5. ?>


Takie coś nie wystarczy?
#luq
Używaj przecinków!
Czego brakuje Ci w wyżej zamieszczonym przeze mnie kodzie?
#luq
Na pewno nie napiszesz tego samym echo winksmiley.jpg
Ale jeśli będziesz miał kilka/kilkadziesiąt takich wywołań jedno pod drugim to możesz zamiast stałych stworzyć tablice np. asocjacyjną i lecieć po niej pętlą.

  1. <?php
  2. $module['jakis_modul']  = 'jakis_modul.php';
  3. $module['jakis_modul2'] = 'jakis_modul2.php';
  4. ?>


  1. <?php
  2. foreach( $module as $key => $value ){
  3.    if( !includeModule( $value ) ){
  4.       echo 'nie znalezionu pliku: '.$value;
  5.    }
  6. }
  7. ?>
kantek
Cytat(renderman @ 19.04.2009, 20:33:20 ) *
Fajnie - działa...ale

chciałbym wywołać kilka stałych - jedna po drugiej i sprawdzić czy pliki istnieją i zwrócić komunikat jeśli nie istnieją. Jak to zrobić nie mam zielonego pojęcia.?.
na pewno chciałbym sprawdzić to czy istnieją już w moje_stale.inc.php a nie w index.php


Jak chcesz podawać kilka parametrów na raz to może:

  1. <?php
  2. function loaduj($tablica)
  3. {
  4.    foreach($tablica as $var){
  5.        //tutaj twoja funkcja includująca i sprawdzajaca co tam chcesz
  6.        include $var;
  7.    }
  8. }
  9.  
  10. loaduj(array(MODULE_1, MODULE_2, MODULE_3));
  11. ?>


Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.