Undefined variable: lang in

Gestart doorJoeryy8 reacties81 weergaven

9 berichten · pagina 1 van 1

Joeryy

Lid · Topicstarter

Berichten
1.533
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hey,

Ik probeer $lang->_("Register"); aan te roepen maar dat werkt niet, hier heb ik de scripts:

Index.php, hier laad ik de pagina mee.

Codeblok (index.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14


require(Application/bootstrap.php);

if(isset($_GET[page]))
{

$template->load($_GET[page]);
}

else
{
$template->load("index");
}

$template->output();
$db->disconnect();
?>

Hier de template class:

Codeblok (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


namespace Pixel;

class template
{
private $db;
private $engine;

private $file;
private $values = array();

private $nvar;

private $path = "Application/Public/";

private $output;

public function __construct()
{

$this->db = new database();
$this->engine = new engine();
}


public function load($file)
{

// Check if requisted page is allowed to visit:
$this->allowed($file);

$this->file = $this->path.$file.".php";

$this->assign("header", "include test.php");

}


public function assign($key, $value) {
$this->values[$key] = $value;
}


public function output()
{

if (!file_exists($this->file))
{

$this->engine->error("Error loading template file ($this->file).", true);
}


ob_start();
include $this->file;
$this->output = ob_get_contents();
ob_end_clean();

foreach ($this->values as $key => $value)
{

$this->output = str_replace("{" . $key . "}", $value, $this->output);
}


echo $this->output;
}
}

?>

En hier bootstrap.php, waar ik alles aanroep:

Codeblok (bootstrap.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


error_reporting(E_ALL);
ini_set(display_errors, 1);

session_start();

require_once("Application/Classes/user.class.php");
require_once("Application/Classes/template.class.php");
require_once("Application/Classes/database.class.php");
require_once("Application/Classes/engine.class.php");
require_once("Application/Classes/forms.class.php");
require_once("Application/Classes/language.class.php");

$db = new Pixeldatabase;

$db->connect("localhost", "root", "***", "test");

$lang = new Pixellanguage("nl");

$engine = new Pixelengine;

$users = new Pixelusers;

$forms = new Pixelforms;

$template = new Pixel emplate;
?>

Als ik bijvoorbeeld $lang->_("Register"); (Of wat dan ook) in /Application/Public/index.php plaats dan zegt hij dat de variabel niet bestaat.

Dit is mijn eerste class die ik ooit gemaakt heb, dus ik weet niet of hij goed is haha.

Poedeltje.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Hoe ziet je language class eruit?
Waar heb je je language file staan?

Ik neem namelijk aan dat je language class een bestand inlaat met key-value pairs. Daar haal je dan met $lang_("X") een variabele uit met de waarde X, die hij dan als vertaling gebruik.
0
Joeryy

Lid · Topicstarter

Berichten
1.533
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Hoe ziet je language class eruit?
Waar heb je je language file staan?

Ik neem namelijk aan dat je language class een bestand inlaat met key-value pairs. Daar haal je dan met $lang_("X") een variabele uit met de waarde X, die hij dan als vertaling gebruik.
Niet alleen $lang werkt niet, Maar $db-> query (); etc. Werken ook niet...
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Wat krijg je als je output als je get_included_files doet?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Oh wacht

require(Application/bootstrap.php);

Je bootstrap staat in Application, maar vervolgens ga je vanuit de bootstrap zo inladen:

require_once("Application/Classes/user.class.php");
require_once("Application/Classes/template.class.php");
require_once("Application/Classes/database.class.php");
require_once("Application/Classes/engine.class.php");
require_once("Application/Classes/forms.class.php");
require_once("Application/Classes/language.class.php");

Dus dan krijg je

Application/Application/Classes/

Maar dat is raar, want require zou aan moeten geven dat die classes niet ingeladen konden worden emo
0
Joeryy

Lid · Topicstarter

Berichten
1.533
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Oh wacht

require(Application/bootstrap.php);

Je bootstrap staat in Application, maar vervolgens ga je vanuit de bootstrap zo inladen:

require_once("Application/Classes/user.class.php");
require_once("Application/Classes/template.class.php");
require_once("Application/Classes/database.class.php");
require_once("Application/Classes/engine.class.php");
require_once("Application/Classes/forms.class.php");
require_once("Application/Classes/language.class.php");

Dus dan krijg je

Application/Application/Classes/

Maar dat is raar, want require zou aan moeten geven dat die classes niet ingeladen konden worden emo
emo, maar helaas lost dit het probleem niet op confused
toevoeging op 16 november 2013, 15:56:21:
Dylanh schreef:
Wat krijg je als je output als je get_included_files doet?
Spoiler tonen
Op /index.php:

C:xampphtdocsindex.php
C:xampphtdocsApplicationbootstrap.php
C:xampphtdocsApplicationClassesuser.class.php
C:xampphtdocsApplicationClassestemplate.class.php
C:xampphtdocsApplicationClassesdatabase.class.php
C:xampphtdocsApplicationClassesengine.class.php
C:xampphtdocsApplicationClassesforms.class.php
C:xampphtdocsApplicationClasseslanguage.class.php

Op /Application/Public/index.php:
C:xampphtdocsindex.php
C:xampphtdocsApplicationbootstrap.php
C:xampphtdocsApplicationClassesuser.class.php
C:xampphtdocsApplicationClassestemplate.class.php
C:xampphtdocsApplicationClassesdatabase.class.php
C:xampphtdocsApplicationClassesengine.class.php
C:xampphtdocsApplicationClassesforms.class.php
C:xampphtdocsApplicationClasseslanguage.class.php
C:xampphtdocsApplicationPublicindex.php
toevoeging op 16 november 2013, 16:20:20:
Zo werkt het wel, maar dit lijkt me geen goede oplossing haha:

Codeblok (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


namespace Pixel;

class template
{
private $db;
private $engine;

private $file;
private $values = array();

private $nvar;

private $path = "Application/Public/";

private $output;

public function __construct()
{

$this->db = new database();
$this->engine = new engine();
}


public function load($file)
{

// Check if requisted page is allowed to visit:
$this->allowed($file);

$this->file = $this->path.$file.".php";

$this->assign("header", "include test.php");

}


public function assign($key, $value) {
$this->values[$key] = $value;
}


public function output()
{

if (!file_exists($this->file))
{

$this->engine->error("Error loading template file ($this->file).", true);
}


$this->output = require(/Application/bootstrap.php);

ob_start();
include $this->file;
$this->output .= ob_get_contents();
ob_end_clean();

foreach ($this->values as $key => $value)
{

$this->output = str_replace("{" . $key . "}", $value, $this->output);
}


echo $this->output;
}
}

?>
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Houd je eens aan de phpfig standaarden en gebruik de composer autoloader.
0
Joeryy

Lid · Topicstarter

Berichten
1.533
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Raaoul schreef:
Houd je eens aan de phpfig standaarden en gebruik de composer autoloader.
"Dit is mijn eerste class die ik ooit gemaakt heb, dus ik weet niet of hij goed is haha."
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Poedeltje schreef:
Eerdere citaten tonen
Raaoul schreef:
Houd je eens aan de phpfig standaarden en gebruik de composer autoloader.
"Dit is mijn eerste class die ik ooit gemaakt heb, dus ik weet niet of hij goed is haha."
Wel je weet niet of hij goed is, daarom geef ik mijn kritiek in die post.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren