Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 30-07-2004, 13:39
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Hoi

Ik wil graag zoiets kunnen doen:

PHP-code:
function init()
{
 require_once(
'script.php');
}

init();
echo(
$a); 
In script.php wordt $a = 'boe' gedaan. Maar dankzij de scope van de functie komt deze dus niet globaal in het script terecht. De oplossing: global $a; gebruiken. Nu wil het probleem echter dat ik veel variabelen gebruik en ik wil gewoon ALLES global hebben, dus iets dat hetzelfde werkt als:

PHP-code:
require_once('script.php');
echo(
$a
Weten jullie of dit kan, en zo ja hoe?
__________________
Per undas adversas (tegen de stroom in)

Laatst gewijzigd op 30-07-2004 om 13:48.
Met citaat reageren
Advertentie
Oud 30-07-2004, 14:03
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
Enlightenment schreef op 30-07-2004 @ 14:39 :
Weten jullie of dit kan, en zo ja hoe?
Class maken met die vars als members, en die class global maken?
Met citaat reageren
Oud 30-07-2004, 15:23
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Beetje zelfde als al mn vars in een array gooien en dan global $array; doen bijvoorbeeld. Daar heb ik aan gedacht, maar dan moet ik dus wel enorm veel aan m'n code veranderen, en daar heb ik nu niet zo'n zin in.

Maar was eigenlijk maar een vraag, zou opzich mooi zijn als het kon, dat je met de scope kon goochelen. Ik gebruik PHP5 en had enigszins wel verwacht dat daar wat meer mogelijkheden op dit gebied waren. Maar op php.net niets gevonden en met Google ook weinig. Alleen hoe globals werken enzo.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 30-07-2004, 15:47
Verwijderd
volgens mij kun je je variabele aanmaken voordat je require aanroept en dan gaat het goed....
Met citaat reageren
Oud 30-07-2004, 15:53
dafelix
Avatar van dafelix
dafelix is offline
Citaat:
eddie schreef op 30-07-2004 @ 16:47 :
volgens mij kun je je variabele aanmaken voordat je require aanroept en dan gaat het goed....
maar volgens mij wordt er pas gerequired binnen een functie, en daar wil Enlightenment een var gebruiken die buiten de functie kwam

heb ik 't goed geraden? Ga ik door voor de koelingsinstallatie?
__________________
$karma++;
Met citaat reageren
Oud 30-07-2004, 16:24
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
Enlightenment schreef op 30-07-2004 @ 16:23 :
Maar op php.net niets gevonden en met Google ook weinig. Alleen hoe globals werken enzo.
Gezien het feit dat jouw oplossing godsgruwelijk lelijk is, ben ik bang dat je ook kunt zoeken tot je een ons weegt.
Met citaat reageren
Oud 30-07-2004, 19:27
duivelaartje
Avatar van duivelaartje
duivelaartje is offline
Citaat:
Chimera schreef op 30-07-2004 @ 17:24 :
Gezien het feit dat jouw oplossing godsgruwelijk lelijk is, ben ik bang dat je ook kunt zoeken tot je een ons weegt.
Doe eens lief en zeg gewoon hoe ze het beter kan doen.
Met citaat reageren
Oud 30-07-2004, 21:52
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
duivelaartje schreef op 30-07-2004 @ 20:27 :
Doe eens lief en zeg gewoon hoe ze het beter kan doen.
Dat heb ik gedaan.
Met citaat reageren
Oud 31-07-2004, 09:54
duivelaartje
Avatar van duivelaartje
duivelaartje is offline
Citaat:
Chimera schreef op 30-07-2004 @ 22:52 :
Dat heb ik gedaan.
Ok.
Met citaat reageren
Oud 31-07-2004, 12:47
Verwijderd
ik heb even iets geprobeerd, en bij mij werkt onderstaand

PHP-code:
<?php 
error_reporting
E_ALL );

function 
init() 
{
    require_once( 
'noname3.php' ); 


init(); 
echo 
"$a\n$b"// Geen notice ondanks E_ALL!
;?>
noname3.php
PHP-code:
<?php 
$a 
"c";
$b "d";

// Vanaf hier copy + paste onder elk script dat je wilt includen
$defined_vars get_defined_vars();
$exclusion = array
(
    
'_ENV',
    
'GLOBALS',
    
'HTTP_ENV_VARS',
    
'argv',
    
'argc',
    
'_POST',
    
'HTTP_POST_VARS',
    
'_GET',
    
'HTTP_GET_VARS',
    
'_COOKIE',
    
'HTTP_COOKIE_VARS',
    
'_SERVER',
    
'HTTP_SERVER_VARS',
    
'_FILES',
    
'HTTP_POST_FILES',
    
'_REQUEST',
    
'key',
    
'value',
    
'exclusion',
    
'defined_vars',
);

reset$defined_vars );
while( list( 
$key$value ) = each$defined_vars ) )
{
    if( !
in_array$key$exclusion ) )
    {
        
// remove variable
        
unset( $$key );

        
// create global
        
global $$key;

        
// assign value
        
$$key $value;
    }
}
;
?>
Alle gebruikte variabelen worden global gemaakt. Niet de mooiste manier, maar het werkt wel
Astu.
Met citaat reageren
Oud 31-07-2004, 12:50
Vinnie Paz
Vinnie Paz is offline
Citaat:
eddie schreef op 31-07-2004 @ 13:47 :
ik heb even iets geprobeerd, en bij mij werkt onderstaand

PHP-code:
<?php 
error_reporting
E_ALL );

function 
init() 
{
    require_once( 
'noname3.php' ); 


init(); 
echo 
"$a\n$b"// Geen notice ondanks E_ALL!
;?>
noname3.php
PHP-code:
<?php 
$a 
"c";
$b "d";

// Vanaf hier copy + paste onder elk script dat je wilt includen
$defined_vars get_defined_vars();
$exclusion = array
(
    
'_ENV',
    
'GLOBALS',
    
'HTTP_ENV_VARS',
    
'argv',
    
'argc',
    
'_POST',
    
'HTTP_POST_VARS',
    
'_GET',
    
'HTTP_GET_VARS',
    
'_COOKIE',
    
'HTTP_COOKIE_VARS',
    
'_SERVER',
    
'HTTP_SERVER_VARS',
    
'_FILES',
    
'HTTP_POST_FILES',
    
'_REQUEST',
    
'key',
    
'value',
    
'exclusion',
    
'defined_vars',
);

reset$defined_vars );
while( list( 
$key$value ) = each$defined_vars ) )
{
    if( !
in_array$key$exclusion ) )
    {
        
// remove variable
        
unset( $$key );

        
// create global
        
global $$key;

        
// assign value
        
$$key $value;
    }
}
;
?>
Alle gebruikte variabelen worden global gemaakt. Niet de mooiste manier, maar het werkt wel
Astu.
dit is lichtelijk geniaal te noemen
Met citaat reageren
Oud 31-07-2004, 17:29
Verwijderd
Citaat:
Vinnie Paz schreef op 31-07-2004 @ 13:50 :
dit is lichtelijk geniaal te noemen
'lichtelijk'
Met citaat reageren
Oud 31-07-2004, 17:30
Vinnie Paz
Vinnie Paz is offline
Citaat:
eddie schreef op 31-07-2004 @ 18:29 :
'lichtelijk'
Met citaat reageren
Oud 01-08-2004, 02:31
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
eddie continues to amaze me.

Thanks! Ik ga het proberen.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 01-08-2004, 14:39
Verwijderd
is het al gelukt?
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 15:13.