allow_call_time_pass_reference = Off

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

allow_call_time_pass_reference = Off

Δημοσίευση από papatzas » 30 Ιαν 2007 17:06

allow_call_time_pass_reference = Off
γνωρίζει κάποιος γιατί είναι απενεργοποιημένο το παραπάνω by default στο Php.ini?

αντιμετωπίζω πρόβλημα στη χρήση των

array_unshift()

array_push()

fsockopen()


------ php.ini ------
; Whether to enable the ability to force arguments to be passed by reference
; at function call time. This method is deprecated and is likely to be
; unsupported in future versions of PHP/Zend. The encouraged method of
; specifying which arguments should be passed by reference is in the function
; declaration. You're encouraged to try and turn this option Off and make
; sure your scripts work properly with it in order to ensure they will work
; with future versions of the language (you will receive a warning each time
; you use this feature, and the argument will be passed by value instead of by
; reference).

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

allow_call_time_pass_reference = Off

Δημοσίευση από cpulse » 30 Ιαν 2007 22:34

Απορώ ποιός θεός σκέφτηκε να βάλει τέτοιο option στο php.ini ... σίγουρα κάποιος που επινόησε και τα register globals και τα magic quotes.. Έχει και η PHP τις μαύρες τις πλευρές.

Καλά κάνει και είναι στο off... το off σημαίνει οτι οι παράμετροι στα functions περνιούνται με κόπιες εκτός κι άν βάλεις επίτηδες ένα & μπροστά και περνιούνται με references.

Τι προβλήματα έχεις στα functions που λες;

Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

allow_call_time_pass_reference = Off

Δημοσίευση από papatzas » 31 Ιαν 2007 00:45

mou vgazei ta akoloutha Warning...

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of array_unshift(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in c:\appserv\www\demo\admin\libsecure.php on line 150

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of each(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in c:\appserv\www\demo\admin\libsecure.php on line 309

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of array_push(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in c:\appserv\www\demo\admin\libsecure.php on line 539

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of reset(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in c:\appserv\www\demo\admin\libsecure.php on line 629

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

allow_call_time_pass_reference = Off

Δημοσίευση από cpulse » 31 Ιαν 2007 14:15

Μου φαίνεται οτι το έχεις στο On. Βάλτω πίσω στο Off και κάνε restart τον apache.

Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

allow_call_time_pass_reference = Off

Δημοσίευση από papatzas » 31 Ιαν 2007 15:44

otan to exw off mou to vgazei.... mou kanei tromeri entypwsi...

se eyxaristw gia tis apantiseis sou

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

allow_call_time_pass_reference = Off

Δημοσίευση από cpulse » 01 Φεβ 2007 15:20

Το έψαξα λίγο καλύτερα και μάλλον το παρεξήγησα..
Τελικά αυτή η ρύθμιση ορίζει το αν θα επιτρέπεται να χρησιμοποιούνται references στα functions, και η default τιμή είναι στο On.

Και επειδή πρόκειται να φύγει στις μελλοντικές εκδόσεις της PHP όταν είναι στο Off βγάζει warnings κάθε φορά που υπάρχουν functions με παραμέτρους που δουλεύουν σαν references.

Για την ιστορία, και για όσους δεν ξέρουν τι σημαίνει pass by value και pass by reference, όταν περνάμε μια μεταβλητή by value περνάμε μια αντιγραφή της, ενώ by reference σημαίνει οτι περνάμε την ίδια την μεταβλητή.

Κώδικας: Επιλογή όλων

// paradeigma by value
function func($var) {
  $var++;
}
$a = 1;
func($a);
echo $a; // bgazei 1

// paradeigma by reference
function func(&$var) {
  $var++;
}
$a = 1;
func($a);
echo $a; // bgazei 2

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες