Versio

protected variable uitlezen

Overzicht Reageren

Storeman storeman

storeman storeman

07/06/2008 13:52:00
Quote Anchor link
Menigeen zal bij deze titel denken: Dat moet je niet willen!

Mee eens! Maar...

Ik ben bezig met het Zend_Framework en wil dit meertalig uit gaan voeren, zit er al lekker in verwerkt, echter wil POedit niet de constanten of protected variabelen die later door de ->_() functie worden gerost opnemen.

Dus ik wil een classe schrijven welke deze functies in een onnozel php bestand plompt, zodat poedit deze kan parsen.

Ik wil liever geen aanpassingen doen in het Zend_Framework, dan raakt het einde namelijk zoek.

Ik zou het liefst dynamisch een functie aan de klasse toevoegen om de protected variabele uit te lezen, heb alleen geen idee of dit mogelijk is. een var_dump kan ze ook uitlezen, dus ergens zou het toch moeten kunnen?
 
PHP hulp

PHP hulp

25/05/2012 13:35:00
Gesponsorde koppelingen:
 
Joren de Wit
Beheerder

Joren de Wit

07/06/2008 14:08:00
Quote Anchor link
Je zou eens naar de magic method __get() kunnen kijken? Als je die public maakt kun je op die manier de protected variable wel uitlezen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class Example
{
    protected $foo;
    
    public function __construct($foo = 'Bar')
    {

        $this->foo = $foo;
    }

    
    public function __get($sVar)
    {

        if(isset($this->$sVar))
        {

            return $this->$sVar;
        }
    }
}


$oExample = new Example();
echo $oExample->foo;
?>

Maar goed je zegt het zelf al, dan ondermijn je dus eigenlijk het protected declareren van die variabele. Dus vraag jezelf goed af of je dit echt wel wilt en of er geen andere methode is...
 
Jelmer rrrr

Jelmer rrrr

07/06/2008 15:12:00
Quote Anchor link
In PHP 5.3 krijgt ReflectionProperty een nieuwe method: setAccessible. Hiermee kan je dan voortaan private & protected properties lezen & schrijven. bron.

Helaas is PHP 5.3 er nog niet, maar ik denk dat je wel ergens een nightly build van 5.3 of 6.0 kan vinden, en die naast je bestaande omgeving kan installeren. Of je download hem gewoon en draait PHP vanaf de commandline, dan hoef je niets te installeren (wel even opletten dat je een binary versie vindt, anders mag je hem gaan compilen)
 
Jelmer rrrr

Jelmer rrrr

07/06/2008 15:12:00
Quote Anchor link
hik
Gewijzigd op 01/01/1970 01:00:00 door Jelmer rrrr
 
Storeman storeman

storeman storeman

07/06/2008 15:17:00
Quote Anchor link
BOEH! ;)

Okee, dat klinkt wel alsof het van toepassing kan zijn, maar ik wil graag wel op iets stabiels ontwikkelen.

Ik heb het maar anders opgelost, ik lees gewoon de bestanden in en ga opzoek naar een bepaald format. Ik ga toch voor elk type een aparte plugin schrijven, dus ik vind het wel verantwoord om het op deze manier op te lossen.
 
Danny K

Danny K

07/06/2008 15:35:00
Quote Anchor link
Ik weet niet of ik het goed begrijp dus sorry als dit niet is wat je zoekt:
Je kunt toch die class extenden en dan alleen een benodigde getter en/of setter maken.
 



Overzicht Reageren

Get Adobe Flash player