lehet modositani tomb tipusu statikus valtozot?
Udv Mindenkinek,
egy erdekes dilemmaba futottam bele 5.2.6-s PHP-nal, szerettem volna kihasznalni a 5-s php adta lehetosegeket es statikus osztalyt szeretnek letrehozni adatbazis kapcsolatok kezelesehez. Egy script futasaban akar tobb adatbazishoz is kapcsolodhatok.Gondoltam letrehozok egy statikus tombot nekik,de amikor tesztelni akartam, azt a hibauzenetet kaptam, hogy Arrays are not allowed in class constants. Hat akarhogy neztem a php dokumentaciojat sehol sem talaltam arra utasitast, hogy statikus valtozo nem lehet tomb tipusu.:
Teszt kod, amit hasznaltam:A segitsegeteket kerem, hatha valamit nagyon elneztem a statikus valtozokkal kapcsolatban?
koszi
-cs-
Sanyi
■ egy erdekes dilemmaba futottam bele 5.2.6-s PHP-nal, szerettem volna kihasznalni a 5-s php adta lehetosegeket es statikus osztalyt szeretnek letrehozni adatbazis kapcsolatok kezelesehez. Egy script futasaban akar tobb adatbazishoz is kapcsolodhatok.Gondoltam letrehozok egy statikus tombot nekik,de amikor tesztelni akartam, azt a hibauzenetet kaptam, hogy Arrays are not allowed in class constants. Hat akarhogy neztem a php dokumentaciojat sehol sem talaltam arra utasitast, hogy statikus valtozo nem lehet tomb tipusu.:
Teszt kod, amit hasznaltam:
require_once( "config.php" );
require_once( "DBConnection.php" );
DBConnection::init();
DBConnection::loadConnection('transaction');
DBConnection::loadConnection('filters');
var_dump( DBConnection::$_db );
DBConnection::destroy();
class DBConnection {
static $_db = array();
private static function init(){
if ( !class_exists( 'staticDBConfig' ) ) {
define("DS",DIRECTORY_SEPARATOR);
$filename = 'incl' . self::DS . 'config.php';
if ( file_exists( $filename ) ) {
include( $filename );
} else {
die( 'No config file exists' );
}
}
}
public static function addConnection( $connectionname ) {
if ( ! empty( $connectionname ) && ! isset( self::$_db[$connectionname] ) ) {
if ( ! class_exists(staticDBConfig) ) {
staticDBConfig::getConnection($connectionname);
self::$_db[$connectionname] = self::mysql_pdo_connect(staticDBConfig::$settings);
}
}
return self::$_db[$connectionname];
}
public static function loadConnection( $connectionname ) {
if ( !isset( self::$_db[$connectionname] ) ) {
self::addConnection($connectionname);
}
return self::$_db[$connectionname];
}
/**
* PDO connection method. We pass a string parameter to select which database we want to connect to,
* We load based on this parameter the configuration properties for the connection.
* If port property is define we use it to be specific to this.
*
* @param string $connectionprops, which database to connect to
* @return PDO connectin resource of false
*/
public static function mysql_pdo_connect($connectionprops) {
$config = $connectionprops;
$conn = NULL;
try {
if (isset ( $config ['port'] ) && ! empty ( $config ['port'] ))
$conn = new PDO ( 'mysql:host=' . $config ['host'] . ';port=' . $config ['port'] . ';dbname=' . $config ['database'] . ';', $config ['login'], $config ['password'] );
else
$conn = new PDO ( 'mysql:host=' . $config ['host'] . ';dbname=' . $config ['database'] . ';', $config ['login'], $config ['password'] );
} catch ( PDOException $e ) {
die ( "Could not connect to db!" );
// ( $e->getMessage (), 1 );
}
return $conn;
}
public static function destroy(){
foreach( self::$_db as $key => $item ) {
self::$_db[$key] = null;
unset( self::$_db[$key]);
}
}
}
class staticDBConfig {
const _default = array ('driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => '****', 'password' => '*****', 'database' => '****_full', 'port' => '3307', 'prefix' => '' );
const _default2 = array ('driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => '****', 'password' => '*****', 'database' => '*****', 'port' => '3307', 'prefix' => '' );
const _default3 = array ('driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => '****', 'password' => '*****', 'database' => '****', 'port' => '3307', 'prefix' => '' );
const _default4 = array ('driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => '***', 'password' => '***', 'database' => '*****', 'port' => '3307', 'prefix' => '');
const _default5 = array ('driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => '****', 'password' => '****', 'database' => '******_main', 'port' => '3307', 'prefix' => '');
static public $settings;
public static function getConnection( $name ) {
switch ( $name ) {
case "service" : self::$settings = self::_default2; break;
case "service3" : self::$settings = self::_default3; break;
case "transaction" : self::$settings = self::_default4; break;
case "filters" : self::$settings = self::_default5; break;
default : self::$settings = self::_default;
}
}
public static function getDetail( $detailProperty ) {
if ( empty( $detailProperty ) ) {
return self::$settings;
} else {
if ( isset( self::$settings[$detailProperty] ) ) {
return self::$settings[$detailProperty];
} else {
return false;
}
}
}
}
koszi
-cs-
Sanyi
maga a konstans nem lehet tömb
forrás
igazabol ez nem valasz a kerdesemre
-cs-
Sanyi
igazad van!
Hat nem rossz fajlt neztem vegig :-)
-cs-
Sanyi