Προς το περιεχόμενο

Php: Συνάρτηση για include


zipos

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχει φτιάξει κανείς συνάρτηση για να κάνει include αρχεία php? Ε λοιπόν, έφτιαξα εγώ, και δείτε τι κουλό ανακάλυψα.

 

To index.php με την συνάρτηση

>
<?php 

function include_layout ($file){
include('Path/'.$file);
}

$a = 666;
include_layout(layout.php);
?>

 

 

Το layout.php

>
<?php
echo $a;
?>

 

Το παραπάνω παράδειγμα δεν κάνει echo τίποτα.

Ενώ αν κάνεις include('Path/'.'layout.php') δουλεύει κανονικά.

 

Να σημειωθεί ότι το παραπάνω ισχύει και για constant μεταβλητές.

Δημοσ.

Προφανώς έκανα συντακτικό λάθος καθώς έγραφα το παράδειγμα. Το θέμα όμως δεν στο συντακτικό λάθος.

Δημοσ.
Έχει φτιάξει κανείς συνάρτηση για να κάνει include αρχεία php? ....

....

Το παραπάνω παράδειγμα δεν κάνει echo τίποτα.

....

 

Γιατί θέλει να φτιάξεις function να κάνει include; Η εντολή include υπάρχει και λειτουργεί μια χαρά. Τέσπα. Απάντηση στο πρόβλημα σου:

 

Για το index.php

>
<?php

function include_layout ($file){
include($file); //Από δώ έφυγε το 'Path/'.
}

$a = 666;
include_layout('layout.php'); //συμφωνώ για τα single quotes του Μιχάλη8
?> 

Το 'Path/'. δημιουργεί πρόβλημα, ΕΚΤΟΣ αν Path (με το πρώτο γράμμα κεφαλαίο) είναι ο υποφάκελος που βρίσκεται το layout.php

 

Για το layout.php

>
<?php
global $a; //kaneis global tin $a
echo $a;
?>

Αφού καλείς την $a μέσα απο function πρέπει να την δηλώσεις global.

Δημοσ.
Γιατί θέλει να φτιάξεις function να κάνει include; Η εντολή include υπάρχει και λειτουργεί μια χαρά. Τέσπα. Απάντηση στο πρόβλημα σου:

 

Για το index.php

>
<?php

function include_layout ($file){
include($file); //Από δώ έφυγε το 'Path/'.
}

$a = 666;
include_layout('layout.php'); //συμφωνώ για τα single quotes του Μιχάλη8
?> 

Το 'Path/'. δημιουργεί πρόβλημα, ΕΚΤΟΣ αν Path (με το πρώτο γράμμα κεφαλαίο) είναι ο υποφάκελος που βρίσκεται το layout.php

 

Για το layout.php

>
<?php
global $a; //kaneis global tin $a
echo $a;
?>

Αφού καλείς την $a μέσα απο function πρέπει να την δηλώσεις global.

 

Το Path είναι ένα απόλυτο path για τα includes και το οποίο έχω δηλώσει σαν σταθερά. Άρα δεν έχει σημασία από που τρέχεις τη συνάρτηση.

 

Πράγματι, αν δηλώσεις global την $α δουλεύει σωστά.

Άλλα έτσι χάνει την χρησιμότητά της η συνάρτηση, γιατί όλο και κάποια μεταβλητή θα σου ξεφεύγει. Κρίμα.

 

Thanx anyway

Δημοσ.
Το Path είναι ένα απόλυτο path για τα includes

Να προτιμάς τα relative paths. Άμα χρειαστεί να μεταφέρεις φάκελο/αρχείο/σερβερ/κλπ με τα relative είναι πιο εύκολο

Δημοσ.

Ναι έτσι πίστευα και γω πριν μερικές μέρες. Ότι είναι καλύτερο με relative paths.

 

Αλλά όπως σου είπα, έχοντας ορίσει

 

>
defined('DS') ? null : define('DS' , DIRECTORY_SEPARATOR);

// Absolute system Path.
defined('SITE_ROOT') ? null : define ('SITE_ROOT' , DS.'home'.DS.'user'.DS.'www');

 

όλα τα includes παίζουν ρολόι χρησιμοποιώντας τις παραπάνω σταθερές.

 

Και όταν με το καλό αλλάξεις σέρβερ ή φάκελο (ακόμα και λειτουργικό), αλλάζοντας την σταθερά SITE_ROOT, τελείωσες.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...