Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Super scope? (https://forum.scholieren.com/showthread.php?t=913619)

Enlightenment 30-07-2004 13:39

[PHP] Super scope?
 
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?

Chimera 30-07-2004 14:03

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?

Enlightenment 30-07-2004 15:23

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. :p

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.

eddie 30-07-2004 15:47

volgens mij kun je je variabele aanmaken voordat je require aanroept en dan gaat het goed....

dafelix 30-07-2004 15:53

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?

Chimera 30-07-2004 16:24

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.

duivelaartje 30-07-2004 19:27

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. :confused:

Chimera 30-07-2004 21:52

Citaat:

duivelaartje schreef op 30-07-2004 @ 20:27 :
Doe eens lief en zeg gewoon hoe ze het beter kan doen. :confused:
Dat heb ik gedaan.

duivelaartje 31-07-2004 09:54

Citaat:

Chimera schreef op 30-07-2004 @ 22:52 :
Dat heb ik gedaan.
Ok.:)

eddie 31-07-2004 12: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 :p
Astu.

Vinnie Paz 31-07-2004 12:50

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 :p
Astu.

dit is lichtelijk geniaal te noemen ;) :)

eddie 31-07-2004 17:29

Citaat:

Vinnie Paz schreef op 31-07-2004 @ 13:50 :
dit is lichtelijk geniaal te noemen ;) :)
'lichtelijk' :confused: :p

Vinnie Paz 31-07-2004 17:30

Citaat:

eddie schreef op 31-07-2004 @ 18:29 :
'lichtelijk' :confused: :p
:D :D

Enlightenment 01-08-2004 02:31

eddie continues to amaze me. ;)

Thanks! Ik ga het proberen. :)

eddie 01-08-2004 14:39

is het al gelukt? :)


Alle tijden zijn GMT +1. Het is nu 00:42.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.