Toon posts:

PHP Classes Combineren

Pagina: 1
Acties:
  • 250 views

Verwijderd

Topicstarter
Hi,

Ik ben een soort van framework naja framework kan je het niet echt noemen.
Alles word gestuurd door middel van een core class.
Maar nu zit ik met een klein probleem.
De Template class wordt geladen in de core class.
Maar als ik $this->core-assign() doe in de template class.
Vindt hij de functie niet in de core class.

Dit is de core class:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<?php 
/*
    Project: RadioMate V1
    Created: 6/02/2009
    
    (C) Copyright By Bourdeaux Stijn & X-hosted
*/
if ( ! defined('include')) exit('Dit script kunt u niet rechtstreeks aan roepen');

//----------------------------------------------------------------
// Core 
//----------------------------------------------------------------
Class Core {
    
    //-----------------------------------------
    // Core object
    //-----------------------------------------
    public $core;
    
    //-----------------------------------------
    // Plugin Array
    //-----------------------------------------
    private $plugin = array();
    
    //-----------------------------------------
    // Settings Array
    //----------------------------------------- 
    private $settings = array();
    
    //-----------------------------------------
    // Vars wegstoppen
    //-----------------------------------------
    private $vars = array(); 
    
    //-----------------------------------------
    // Error LVL
    //-----------------------------------------
    private $error_level = 'E_ALL';
    
    //-----------------------------------------
    // Core Constructor
    //-----------------------------------------
    public function __construct($plugin,$settings=null) {
        
        //-----------------------------------------
        // Setting's
        //-----------------------------------------
        $this->settings = $settings;
        
        switch($this -> settings['status']) {
            
            case 'Ontwikkelen':
                
                $this -> error_level = 'E_ALL';
                
            break;  
            
            case 'Testen':
            
                $this -> error_level = 'E_ALL ^ E_NOTICE';
                
            break;
            
            case 'Gebruiken':
            
                $this -> error_level = '0';
                
            break;
            
            default: 
                
                $this -> error_level = 'E_ALL'; 
        }
        
        //-----------------------------------------
        // Plugin's
        //-----------------------------------------
        foreach ($plugin as $key => $value) {
            
            switch($value) {
                
                case 'template':
                
                    require_once('template.php');
                    $this -> tpl = new Template($this -> settings['tpl_map'], $this -> error_level);

                break;      
            }                               
        }
    }
    
    //-----------------------------------------
    // Array Stripper
    //-----------------------------------------
    public function assign($var, $value=null)
    {
        if( is_array($var) )
        {
            foreach($var as $key => $value)
            {
                if( isset($this->vars[$key]) )
                {
                    trigger_error("De Variabel '".$key."' is al ingebruik", E_USER_WARNING);
                }
                
                $this->vars[$key] = $value;
            }
        }
        else
        {
            if( isset($this->vars[$var]) )
            {
                trigger_error("De Variabel '".$key."' is al ingebruik", E_USER_WARNING);
            }
            
            $this->vars[$var] = $value;
        }
    } 
    
    //-----------------------------------------
    // Licentie Server
    //-----------------------------------------
    private function check_servers($data=null) {
        
        if( is_array($data) ) {
            
            trigger_error("Arrays Gebruiken is niet toegestaan!", E_USER_WARNIG);       
        }   else    {
            
            if( @fopen($data, "r") ) {
                
                return 'De licentie server('.$data.') is up and running!';          
            }   else    {
                
                return 'Sorry maar de licentie server('.$data.') is down!';         
            }
                                                                                                                            
        }
    }
    
    //-----------------------------------------
    // Core Version
    //-----------------------------------------
    private function core_version() {
        
        $versie = '0.1 Aplha';
        
        if( !empty($versie) ) {
            
            return $versie;     
        }   else    {
            
            return 'Geen Core versie gevonden!';        
        }                                               
    }
    
    //-----------------------------------------
    // Systeem Info
    //-----------------------------------------
    public function system_info(){
        
        if( $this -> settings == null or !is_array( $this -> settings ) ) {
            
            return 'Er is geen systeem info beschikbaar...';        
        }   else    {
            
            $this -> assign($this -> settings); 
            
            extract($this -> vars); 
            
            $text = '<b>Systeem Info:</b><br />
                    <b>Status:</b> '.$status.'<br />
                    <b>Naam:</b> '.$sitenaam.'<br />
                    <b>Adres:</b> '.$url.'<br />
                    <b>System Versie:</b> '.$version.'<br />
                    <b>Core Versie:</b> '.$this->core_version().'<br />
                    <b>Server01:</b> '.$this -> check_servers($lserver01).'<br />
                    <b>Server02:</b> '.$this -> check_servers($lserver02).'<br />';
                    
            return $text;       
        }
    }
    
    //-----------------------------------------
    // Error Handler
    //-----------------------------------------
    public function error($text, $onderdeel) {
        
        return '<h1>FoutMelding</h1><hr /><b>Melding:</b> '.$text.'<br /><b>Onderdeel:</b>'.$onderdeel.'<br/>'.$this -> systeem_info(); 
    }
}
?>


Dit is de template class:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php

/*
    Project: RadioMate V1
    Created: 10/2/2009
    
    (C) Copyright By Bourdeaux Stijn & X-hosted
*/

if ( ! defined('include')) exit('Dit script kunt u niet rechtstreeks aan roepen');

//----------------------------------------------------------------
// Template Parser
//----------------------------------------------------------------
Class Template {
    
    //-----------------------------------------
    // Core Object
    //-----------------------------------------
    public $core;
    
    //-----------------------------------------
    // Template Map
    //-----------------------------------------
    private $tpl_map;
    
    //-----------------------------------------
    // Error Lvl
    //-----------------------------------------
    private $error_level;
    
    //-----------------------------------------
    // Vars Array
    //-----------------------------------------
    private $vars = array();
    
    //-----------------------------------------
    // Constructor
    //-----------------------------------------
    public function __construct($tpl_map,$error_level=null) {
        
        //-----------------------------------------
        // Check Map
        //-----------------------------------------
        if( !is_dir($tpl_map)) {
            
            trigger_error('De Template map('.$tpl_map.') werdt niet gevonden!', E_USER_WARNING);        
        }   else    {
            
            $this -> $tpl_map = $tpl_map;       
        }
        
        $this -> error_level = $error_level;
    }
    
    //-----------------------------------------
    // Display
    //-----------------------------------------
    public function display($file, $data=null) {
        
        $file = $this -> tpl_map.$file;
        
        if( is_array($data) ) {
            
            $this->core->assign($data);     
        }
        
        if( file_exists($file) ) {
            
                    
        }                                                               
    }
}
?>

[ Voor 5% gewijzigd door Verwijderd op 12-02-2009 20:49 ]


  • ari
  • Registratie: November 2007
  • Laatst online: 01-08 22:36

ari

Wat heb je zelf al geprobeerd?

GoT is geen afhaalbalie waar je je probleem kunt neersmijten en er een oplossing gegeven wordt. Er wordt inzet verwacht, niet twee lappen code.

offtopic:
Er bestaan trouwens ook php-tags op het forum, voor betere weergave.

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 21:09
Kun je de code misschien even highlighting geven met code=php?

Een iets kleinere lap had ook wel gemogen :P

$this->core-assign() ziet er zowiezo uit alsof je $this->core->assign() bedoelde, maar ik ga ervanuit dat dat een typefoutje is

offtopic:
aan roepen moet aan elkaar, aanroepen :)


edit: min of meer hetzelfde als ari die me een paar seconden voor was :)

[ Voor 11% gewijzigd door doeternietoe op 12-02-2009 20:44 ]


Verwijderd

Topicstarter
Ik heb de code aangepast;).

Maar ik heb nog niets geprobeerd ik loop al de heletijd te surfen op internet.
Achter info hoe ik het probleem kan op lossen an in de php.net maar kom niet veel verder

Edit: Ik heb al eens de core geinclude en hem $this->core meegegeven en dat werkt.
Maar normaal moet $this->core ook werken want hij zit in de core class.

[ Voor 28% gewijzigd door Verwijderd op 12-02-2009 20:55 ]


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Een hele lap code inderdaad. Ik zie trouwens nog nergens dat je de $core variabele in je Template class een waarde geeft, al zeg je dat je dat in je Core class doet.

En er zitten ook nog wat typo's in je code, E_USER_WARNIG zag ik ergens. ;)

Tip: een goede IDE kan makkelijk zijn als je veel type of andere fouten maakt.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 21:09
Waar wordt $this->core dan geïnitialiseerd in de template class?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je nou volgende keer even onze Quickstart doorneemt dan heb je meteen een goed en netjes topic; zoals je topicstart nu is, is het nogal karig en niet veel meer dan een "Kan iemand even...?"-topic. Daarbij post je véél en véél te veel code. Als je nou enkel relevante(!!) stukken wil plaatsen voortaan dan hoeven wij ons niet door complete oerwouden aan code te worstelen om te zien waar het mis is of kan gaan.

Kortom: we zijn geen afhaaltoko waar je even je code dumpt en waar wij dan als dolle honden op af vliegen om zo snel mogelijk je probleem op te lossen. Overigens is "Vindt hij de functie niet in de core class." natuurlijk ook niet echt een duidelijke probleemomschrijving. Ik mis foutmeldingen, errorcodes en andere relevante info (die je geheid moet krijgen; en dat helpt je weer bij het (zelf) zoeken naar de oorzaak van je probleem (zie ook Debuggen: Hoe doe ik dat?)).

Al met al dus reden genoeg om hier een eind aan te breien. Open gerust een nieuw topic als je er niet uit komt, maar hou dan wel onze voorgenoemde Quickstart in je achterhoofd. Daar heb ik je overigens al eerder op gewezen, net als op quickfixes.

offtopic:
Dan nog een kleinigheidje: je hoeft niet na elke paar woorden op enter te rammen; tekstomloop kan het forum zelf regelen en dat leest wel zo prettig ;) Daarbij is het handig als je, voordat je op "Verstuur bericht" klikt, even je bericht doorleest; want een van een aantal zinnen is de leesbaarheid nogal laag ;) Neem de eerste zin uit je topic als voorbeeld... :)

[ Voor 57% gewijzigd door RobIII op 12-02-2009 21:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.