OOP hulp
Code (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
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
class Language {
private $language;
private $languageId;
private $languageName;
private $languageCode;
public function __construct() {
$this->language = 'active';
$this->languageId = 1;
$this->languageName = 'Nederlands';
$this->languageCode = 'NL';
}
public function getLanguage() {
return $this->language;
}
}
class Settings extends Language {
public function __construct() {
$this->language = parent::getLanguage();
}
}
$language = new Language();
echo 'Language: '.$language->getLanguage().'<br />';
$settings = new Settings();
echo 'Language: '.$settings->language.'<br />';
private $language;
private $languageId;
private $languageName;
private $languageCode;
public function __construct() {
$this->language = 'active';
$this->languageId = 1;
$this->languageName = 'Nederlands';
$this->languageCode = 'NL';
}
public function getLanguage() {
return $this->language;
}
}
class Settings extends Language {
public function __construct() {
$this->language = parent::getLanguage();
}
}
$language = new Language();
echo 'Language: '.$language->getLanguage().'<br />';
$settings = new Settings();
echo 'Language: '.$settings->language.'<br />';
Ik probeer nu via settings de language op te halen maar waarom werkt het niet? Ik haal met parent::getLanguage(); toch de language op die in de class language staat? Wat gaat er verkeerd of wat doe ik verkeerd?
Verder is dit niet goed OO ;) Languae is juist een setting onderdeel niet andersom.. Maar zou je erg geen 'config' van maken? Verder kan je gewoon je variabelen protected maken, uitbreiding moet mogelijk wezen.
Gewijzigd op 28/12/2010 23:24:18 door Niels K
Ik heb een CMS alleen ik wil die uit eindelijk verbeteren met OOP en dus ben ik daar wat mee aan het experimenteren. Alleen heb wat tutorials door gelezen maar snap er geen ruk van (het doel ook niet altijd).
Situatie, ik heb alle instellingen in mijn database staan (site titel, site keywords etc) alleen die word gekoppeld aan een taal (dus dacht via die class Language de settings op te halen) Snap er niks van:SS
Schrijf eerst eens alles uit, en lees dit topic over software engineering: klik.
En volg deze arikelen / topics ook eens:
http://www.phphulp.nl/php/forum/topic/oop-user-classe/75272/last/
http://phptuts.nl/view/45/10/
http://www.pfz.nl/wiki/object-oriented-programming/
http://www.sitemasters.be/tutorials/1/1/567/PHP/OOP_Een_begin_maken_met_OOP
Etc, Je moet eerst goed in object kunnen denken voordat je begint met het bouwen van een complex systeem zoals een cms. Dan kan je ook richting het veelgebruikte pattern MVC gaan werken. Wordt in het topic 'OOP User classe' ook uitgelegd, dus is misschien interessant om te volgen? De topic starter heeft ook moeite met OO dus ;)
Gewijzigd op 28/12/2010 23:36:22 door Niels K
Heb jij toevallig niet ergens een voorbeeld liggen van hoe je 2 classes aan elkaar hebt en die gegevens uit de database haalt?
Morgen zal ik een stukje voor je schrijven, het is nu tijd om te gaan slapen ;)
Ok thx man ;)
Je kan dit stukje het beste even splitsen in 2 delen:
- Database
- Config / Settings / etc..
Nu mag je zelf eerst met de database aan de gang, in het topic waar ik je gisterenavond ook naar toe wees wordt dat onderwerp behandeld, doe er je voordeel mee.
Als je dat gerealiseerd hebt en het werkt, moet je even terugkomen en gaan we verder met de config.
Alleen even een vragen hoe haal ik gegevens uit een een andere class? Bijvoorbeeld in de class Language heb ik de url nodig die ik uit de class Url haal.
Of moet dat door bijvoorbeeld in de class language een setUrl te maken?
EDIT
Tot nu toe heb ik dit:
Code (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
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
<?php
class Language {
// @var boolean
private $language;
// @var integer
private $id;
// @var String
private $name;
// @var String
private $code;
// @var String
private $menu;
// Constructor
public function __construct() {
if(isset($_COOKIE['language'])) {
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE status = 'active' AND id = '".$_COOKIE['language']."'");
if(mysql_num_rows($query) == 0) {
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE id = '1'");
}
}else{
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE id = '1'");
}
$row = mysql_fetch_array($query);
$this->setLanguage($row['id'], $row['name'], $row['code']);
}
// Set language
// @param integer $id
// @param String $name
// @param String code
private function setLanguage($id, $name, $code) {
$this->id = $id;
$this->name = $name;
$this->code = $code;
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE status = 'active' ORDER BY order_count ASC");
if(mysql_num_rows($query) > 1) {
// Set language true;
$this->language = true;
// Build language menu
$this->menu = '<div class="language"><ul>';
while($row = mysql_fetch_array($query)) {
$this->menu .= '<li><a href="URL/'.$row['code'].'"><img src="/interface/images/'.$row['code'].'.gif" border="0" alt="'.$row['name'].'" /></a></li>';
}
$this->menu .= '</ul></div>';
}else{
// Set language false
$this->language = false;
}
}
// Give the language status
// @return boolean
public function getLanguage() {
return $this->language;
}
// Give the language id
// @return integer
public function getId() {
return $this->id;
}
// Give back language name
// @return String
public function getName() {
return $this->name;
}
// Give back language code
// @return String
public function getCode() {
return $this->code;
}
// Give back language menu
// @return String
public function getMenu() {
return $this->menu;
}
}
?>
class Language {
// @var boolean
private $language;
// @var integer
private $id;
// @var String
private $name;
// @var String
private $code;
// @var String
private $menu;
// Constructor
public function __construct() {
if(isset($_COOKIE['language'])) {
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE status = 'active' AND id = '".$_COOKIE['language']."'");
if(mysql_num_rows($query) == 0) {
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE id = '1'");
}
}else{
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE id = '1'");
}
$row = mysql_fetch_array($query);
$this->setLanguage($row['id'], $row['name'], $row['code']);
}
// Set language
// @param integer $id
// @param String $name
// @param String code
private function setLanguage($id, $name, $code) {
$this->id = $id;
$this->name = $name;
$this->code = $code;
$query = mysql_query("SELECT id,name,code FROM table_languages WHERE status = 'active' ORDER BY order_count ASC");
if(mysql_num_rows($query) > 1) {
// Set language true;
$this->language = true;
// Build language menu
$this->menu = '<div class="language"><ul>';
while($row = mysql_fetch_array($query)) {
$this->menu .= '<li><a href="URL/'.$row['code'].'"><img src="/interface/images/'.$row['code'].'.gif" border="0" alt="'.$row['name'].'" /></a></li>';
}
$this->menu .= '</ul></div>';
}else{
// Set language false
$this->language = false;
}
}
// Give the language status
// @return boolean
public function getLanguage() {
return $this->language;
}
// Give the language id
// @return integer
public function getId() {
return $this->id;
}
// Give back language name
// @return String
public function getName() {
return $this->name;
}
// Give back language code
// @return String
public function getCode() {
return $this->code;
}
// Give back language menu
// @return String
public function getMenu() {
return $this->menu;
}
}
?>
Zit ik een beetje op de goede weg of moet/kan dit beter?
Gewijzigd op 30/12/2010 10:58:35 door Joakim Broden
BUMPJE :)
Je Language object heeft op een gegeven moment een url nodig? Dan zal je Language object dus over het betreffende Url object moeten kunnen beschikken. In je Language klasse kun je bijvoorbeeld een setUrl() method gebruiken waarmee je een Url object aan een property van de Language klasse toekent:
Code (php)
Op de plaats waar je nu de daadwerkelijke url nodig hebt, kun je dan $this->oUrl->getUrl() oid aanroepen...
Daar dacht ik ook al aan. Maar is deze opzet al redelijk of kan dit nog beter/makkelijker/sneller?
Database handler mis ik nog?