Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
spikhoff
HV veteran
liitunud: 26.01.2005
|
21.08.2008 22:57:27
PHP klassid ja include |
|
|
config.php:
php:
|
<?php $config = '123'; ?>
|
test.php:
php:
|
<?php include('config.php'); class test { var $config = $config??? } ?>
|
Ehk siis kuidas ma saaksin includitud muutujad klassi?
Terv,
|
|
Kommentaarid: 59 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
i8080
Kreisi kasutaja

liitunud: 15.03.2002
|
22.08.2008 08:44:18
|
|
|
<?php
var $config = '456';
// algväärtus on 456
include('config.php');
// uus väärtus on '123';
class test
{
}
?>
|
|
|
Kommentaarid: 169 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
151 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
22.08.2008 09:14:18
|
|
|
defineeringu võid teisest failist includega sikutada soovi korral
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
spikhoff
HV veteran
liitunud: 26.01.2005
|
22.08.2008 11:45:13
|
|
|
Just olekski vaja teada saada kuidas ma seda sikutan? Mul on ju kaks PHP faili.
Arvan, et proovisin seda, ja mäletamist mööda sain errori.
sick1 kirjutas: |
php:
|
<?php var $config = '456'; // algväärtus on 456 include('config.php'); // uus väärtus on '123'; class test { } ?>
|
|
|
|
Kommentaarid: 59 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
22.08.2008 12:04:13
|
|
|
php:
|
<?php class test { private $config = CONFIG; function kaja() { } } $foo = new test(); $foo->kaja(); ?>
|
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
spikhoff
HV veteran
liitunud: 26.01.2005
|
22.08.2008 13:32:08
|
|
|
Tänud
|
|
Kommentaarid: 59 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
kapa24
HV vaatleja
liitunud: 23.01.2003
|
23.08.2008 11:25:12
|
|
|
tyyp88 kirjutas: |
Tänud  |
Üks võimalus veel:
php:
|
class test { private $config = $GLOBALS['config']; };
|
|
|
tagasi üles |
|
 |
spikhoff
HV veteran
liitunud: 26.01.2005
|
23.08.2008 12:30:52
|
|
|
Terv,
On t6esti v6imalus, aga arvan, et konfiguratsiooni parameetrid v6iksid j22da konstantseteks.
On veel mingeid trikke kuidas keegi n2iteks kirjutab ja loeb sisse konfiguratsiooni faili?
|
|
Kommentaarid: 59 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
iceincube
HV veteran

liitunud: 18.11.2005
|
23.08.2008 13:05:28
|
|
|
klopsisin kiirelt kokku oma failikogust.. vbla on süntaxi vigasi ka..
töötab siis alates php5
registry.php
<?php
class registry {
protected static $_instance = null;
protected $_arrData = array();
public static function getInstance() {
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}
static function set($strName, $data) {
$instance = self::getInstance();
$instance->_arrData[$strName] = $data;
return true;
}
static function get($strName) {
$instance = self::getInstance();
if(isset($instance->_arrData[$strName])) {
return $instance->_arrData[$strName];
} else {
return false;
}
}
}
|
config.php
$muutuja = 'see on tähtis muutuja nüüd';
require_once('registry.php');
registry::set('tahtismuutuja', $muutuja);
|
test.php
require('config.php');
class test {
public function kuva(){
echo registry::get('tahtismuutuja');
}
}
$objTest = new test();
$objTest->kuva(); |
|
|
Kommentaarid: 39 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
37 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
23.08.2008 18:54:39
|
|
|
tyyp88 kirjutas: |
On veel mingeid trikke kuidas keegi n2iteks kirjutab ja loeb sisse konfiguratsiooni faili? |
Ma reeglina väldin konfifailis hulga muutujate või konstantide defineerimist. Pigem defineerin seal ühe massiivi, milles siis kõik konfiguratsiooniseaded kirjas on:
php:
|
<?php "username" => "Mihkel Muhkel", "password" => "f1s63a", "port" => 80, ); ?>
|
Või siis kirjutan konfifaili üldse standardse konfifaili süntaksiga ja parsin selle ise:
# meie tubli kasutaja
username="Mihkel Muhkel"
password=f1s63a
port=80 # http |
|
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
spikhoff
HV veteran
liitunud: 26.01.2005
|
23.08.2008 21:57:21
|
|
|
nene, kuidas sa nüüd selle array t6mbaksid klassi sisse?
|
|
Kommentaarid: 59 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
23.08.2008 22:41:20
|
|
|
Ilmselt peaks selle eest vastutama mõni selle klassi meetod:
php:
|
<?php class Conf { private $conf; /** * Laeb konfiguratsiooni etteantud failist */ function load($filename) { include($filename); $this->conf = $CONF; } /** * get-meetodid kõigi konfiguratsioonifailis olevate seadete * kohta. */ function __call($method, $args) { if (preg_match('/^get(.*)/', $method, $matches)) { } } } $conf = new Conf(); $conf->load("conf.php"); echo $conf-> getUsername(); echo $conf-> getPassword(); ?>
|
|
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
raul72
HV kasutaja

liitunud: 23.03.2006
|
13.09.2008 21:51:06
|
|
|
veel üks võimalus:
config.inc:
php:
|
'var1' => 'foo', 'var2' => 'bar', );
|
class
php:
|
class foo { var $var1 = 'default value'; var $var2 = 'default value'; function bar() { include 'config.inc'; foreach ($config as $var => $value) { $this->$var = $value; } } }
|
ja siis klassis on juures erinevad checkid et midagi katki ei läheks ja ka config faili valimine
_________________
 |
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
iceincube
HV veteran

liitunud: 18.11.2005
|
13.09.2008 21:58:14
|
|
|
Tegelikult peaks klasssile passima muutujad läbi tema mingi kindla meetodi, mitte, et klassi ise võtab.
Vähemalt tundub nii õigem,
mingile globaalsele muutujale "lootma" jääda oelks ju tgl vale?
viimati muutis iceincube 13.09.2008 22:03:34, muudetud 1 kord |
|
Kommentaarid: 39 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
37 |
|
tagasi üles |
|
 |
sander85
HV kasutaja

liitunud: 30.09.2007
|
13.09.2008 21:59:21
|
|
|
raul72 kirjutas: |
veel üks võimalus:
config.inc:
php:
|
'var1' => 'foo', 'var2' => 'bar', );
|
class
php:
|
class foo { var $var1 = 'default value'; var $var2 = 'default value'; function bar() { include 'config.inc'; foreach ($config as $var => $value) { $this->$var = $value; } } }
|
ja siis klassis on juures erinevad checkid et midagi katki ei läheks ja ka config faili valimine |
miks mitte lugeda algne konf sisse selle funktsiooni abil: http://ee2.php.net/function.parse-ini-file
ja hiljem hoida muutujate väärtusi näiteks sessioonis ning luua funktsioonid nende lugemiseks ja neisse kirjutamiseks
_________________ Think of how stupid the average person is, and realize half of them are stupider than that.
-- G. Carlin |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
raul72
HV kasutaja

liitunud: 23.03.2006
|
13.09.2008 22:31:12
|
|
|
iceincube, urr, kuidas nõnna, see tähendaks et igas entry poindis (kohas kust hakatakse klassisüsteemiga suhtlema) peaks olema koodiloogika mis loeb confi ja passib need klassile?
p.s arvestades et fail milles muutuja $config defineeritakse includetakse funktsioonis (ja eeldades et tegeled globals=off) siis ei ole ta globaalne muutuja
sander85, hea et meelde tuletasid - ini parse on ülilahe asi
_________________
 |
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
17.09.2008 00:48:08
|
|
|
raul72 kirjutas: |
iceincube, urr, kuidas nõnna, see tähendaks et igas entry poindis (kohas kust hakatakse klassisüsteemiga suhtlema) peaks olema koodiloogika mis loeb confi ja passib need klassile? |
Sugugi mitte. Ühes kohas initsialiseerid objekti vajalike muutujatega ja siis järgmistes kasutad juba seda initsialiseeritud objekti. (Või kui sa mõtled entry pointide all eraldi PHP faile, mille poole veebist saab pöörduda, siis neis peaks igaühes nagunii olema mingi pöördumine funktsiooni poole, mis teostaks kõigi entry pointide jaoks ühiseid toiminguid.)
Pealegi, miks peaks üldse üks klass olema teadlik sellest, kus talle vajalik konfiguratsioon täpselt asub? See piirab oluliselt selle klassi kasutusvõimalusi. Võibolla tekib vajadus kasutada ühes kohas ühte ja teises kohas teist konfiguratsiooni. Päris kindlasti on see kasulik testimisel - katsetamaks erinevate konfiguratsiooniseadete mõju ilma et peaks minema konfifaili ennast näppima.
|
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
|