Wenn du dir das mal mit print_r() ausgeben lässt erhälst du einen Baum den du rückwärts zurückverfolgen kannst.
Hallo
Habe ein Objekt, sieht im Var_dump so aus:
PHP-Code:object(Varien_Db_Adapter_Pdo_Mysql)#21 (26) { ["_transactionLevel:protected"]=> int(0)
["_connectionFlagsSet:protected"]=> bool(true) ["_ddlCache:protected"]=> array(0) { }
["_bindParams:protected"]=> array(0) { } ["_bindIncrement:protected"]=> int(0) ["_debug:protected"]=>
bool(false) ["_logQueryTime:protected"]=> float(0.05) ["_logAllQueries:protected"]=> bool(false)
["_logCallStack:protected"]=> bool(false) ["_debugFile:protected"]=> string(17) "var/debug/sql.txt"
["_debugIoAdapter:protected"]=> NULL ["_debugTimer:protected"]=> int(0) ["_cacheAdapter:protected"]=>
object(Varien_Cache_Core)#23 (6) { ["_backend:protected"]=> object(Zend_Cache_Backend_File)#10 (3) {
["_options:protected"]=> array(9) { ["cache_dir"]=> string(42) "D:\xampp\htdocs\sbrendlemagtest\var\cache\"
["file_locking"]=> bool(true) ["read_control"]=> bool(true) ["read_control_type"]=> string(5) "crc32"
["hashed_directory_level"]=> int(1) ["hashed_directory_umask"]=> int(511) ["file_name_prefix"]=> string(4)
"mage" ["cache_file_umask"]=> int(384) ["metadatas_array_max_size"]=> int(100) }
["_metadatasArray:protected"]=> array(1) { ["19c_CORE_CACHE_OPTIONS"]=> array(4) { ["hash"]=>
int(781659009) ["mtime"]=> int(1283780896) ["expire"]=> float(9999999999) ["tags"]=> array(1) { [0]=>
string(8) "19c_MAGE" } } } ["_directives:protected"]=> array(3) { ["lifetime"]=> int(7200) ["logging"]=> bool(false)
["logger"]=> NULL } } ["_options:protected"]=> array(9) { ["write_control"]=> bool(true) ["caching"]=> bool(true)
["cache_id_prefix"]=> string(4) "19c_" ["automatic_serialization"]=> bool(false) ["automatic_cleaning_factor"]=>
int(0) ["lifetime"]=> int(7200) ["logging"]=> bool(false) ["logger"]=> NULL ["ignore_user_abort"]=> bool(false) }
["_specificOptions:protected"]=> array(0) { } ["_lastId:private"]=> string(22) "19c_CORE_CACHE_OPTIONS"
["_extendedBackend:protected"]=> bool(true) ["_backendCapabilities:protected"]=> array(6) {
["automatic_cleaning"]=> bool(true) ["tags"]=> bool(true) ["expired_read"]=> bool(true) ["priority"]=> bool(false) ["infinite_lifetime"]=> bool(true) ["get_list"]=> bool(true) } } ["_isDdlCacheAllowed:protected"]=> bool(true)
["_pdoType:protected"]=> string(5) "mysql" ["_numericDataTypes:protected"]=> array(16) { [0]=> int(0) [1]=>
int(1) [2]=> int(2) ["INT"]=> int(0) ["INTEGER"]=> int(0) ["MEDIUMINT"]=> int(0) ["SMALLINT"]=> int(0)
["TINYINT"]=> int(0) ["BIGINT"]=> int(1) ["SERIAL"]=> int(1) ["DEC"]=> int(2) ["DECIMAL"]=> int(2) ["DOUBLE"]=> int(2) ["DOUBLE PRECISION"]=> int(2) ["FIXED"]=> int(2) ["FLOAT"]=> int(2) }
["_defaultStmtClass:protected"]=> string(21) "Zend_Db_Statement_Pdo" ["_config:protected"]=> array(12) {
["model"]=> string(6) "mysql4" ["initStatements"]=> string(14) "SET NAMES utf8" ["type"]=> string(9) "pdo_mysql" ["host"]=> string(9) "localhost" ["username"]=> string(4) "root" ["password"]=>
object(Mage_Core_Model_Config_Element)#14 (0) { } ["dbname"]=> string(15) "sbrendlemagtest" ["active"]=>
string(1) "1" ["charset"]=> NULL ["persistent"]=> bool(false) ["options"]=> array(2) { ["caseFolding"]=> int(0)
["autoQuoteIdentifiers"]=> bool(true) } ["driver_options"]=> array(0) { } } ["_fetchMode:protected"]=> int(2)
["_profiler:protected"]=> object(Zend_Db_Profiler)#43 (4) { ["_queryProfiles:protected"]=> array(0) { }
["_enabled:protected"]=> bool(false) ["_filterElapsedSecs:protected"]=> NULL ["_filterTypes:protected"]=> NULL }
["_defaultProfilerClass:protected"]=> string(16) "Zend_Db_Profiler" ["_connection:protected"]=> object(PDO)#35
(0) { } ["_caseFolding:protected"]=> int(0) ["_autoQuoteIdentifiers:protected"]=> bool(true)
["_allowSerialization:protected"]=> bool(true) ["_autoReconnectOnUnserialize:protected"]=> bool(false) }
Wie komme ich nun an z.b. "dbname"?
Danke euch,
Gruß Stefan![]()
Wenn du dir das mal mit print_r() ausgeben lässt erhälst du einen Baum den du rückwärts zurückverfolgen kannst.
Kannst du mir ein Beispiel machen? Wäre dir echt dankbar ... mach da schon seit heute morgen herum
PHP-Code:Varien_Db_Adapter_Pdo_Mysql Object
(
[_transactionLevel:protected] => 0
[_connectionFlagsSet:protected] => 1
[_ddlCache:protected] => Array
(
)
[_bindParams:protected] => Array
(
)
[_bindIncrement:protected] => 0
[_debug:protected] =>
[_logQueryTime:protected] => 0.05
[_logAllQueries:protected] =>
[_logCallStack:protected] =>
[_debugFile:protected] => var/debug/sql.txt
[_debugIoAdapter:protected] =>
[_debugTimer:protected] => 0
[_cacheAdapter:protected] => Varien_Cache_Core Object
(
[_backend:protected] => Zend_Cache_Backend_File Object
(
[_options:protected] => Array
(
[cache_dir] => D:xampphtdocssbrendlemagtestvarcache
[file_locking] => 1
[read_control] => 1
[read_control_type] => crc32
[hashed_directory_level] => 1
[hashed_directory_umask] => 511
[file_name_prefix] => mage
[cache_file_umask] => 384
[metadatas_array_max_size] => 100
)
[_metadatasArray:protected] => Array
(
[19c_CORE_CACHE_OPTIONS] => Array
(
[hash] => 781659009
[mtime] => 1283780896
[expire] => 9999999999
[tags] => Array
(
[0] => 19c_MAGE
)
)
)
[_directives:protected] => Array
(
[lifetime] => 7200
[logging] =>
[logger] =>
)
)
[_options:protected] => Array
(
[write_control] => 1
[caching] => 1
[cache_id_prefix] => 19c_
[automatic_serialization] =>
[automatic_cleaning_factor] => 0
[lifetime] => 7200
[logging] =>
[logger] =>
[ignore_user_abort] =>
)
[_specificOptions:protected] => Array
(
)
[_lastId:private] => 19c_CORE_CACHE_OPTIONS
[_extendedBackend:protected] => 1
[_backendCapabilities:protected] => Array
(
[automatic_cleaning] => 1
[tags] => 1
[expired_read] => 1
[priority] =>
[infinite_lifetime] => 1
[get_list] => 1
)
)
[_isDdlCacheAllowed:protected] => 1
[_pdoType:protected] => mysql
[_numericDataTypes:protected] => Array
(
[0] => 0
[1] => 1
[2] => 2
[INT] => 0
[INTEGER] => 0
[MEDIUMINT] => 0
[SMALLINT] => 0
[TINYINT] => 0
[BIGINT] => 1
[SERIAL] => 1
[DEC] => 2
[DECIMAL] => 2
[DOUBLE] => 2
[DOUBLE PRECISION] => 2
[FIXED] => 2
[FLOAT] => 2
)
[_defaultStmtClass:protected] => Zend_Db_Statement_Pdo
[_config:protected] => Array
(
[model] => mysql4
[initStatements] => SET NAMES utf8
[type] => pdo_mysql
[host] => localhost
[username] => root
[password] => Mage_Core_Model_Config_Element Object
(
)
[dbname] => sbrendlemagtest
[active] => 1
[charset] =>
[persistent] =>
[options] => Array
(
[caseFolding] => 0
[autoQuoteIdentifiers] => 1
)
[driver_options] => Array
(
)
)
[_fetchMode:protected] => 2
[_profiler:protected] => Zend_Db_Profiler Object
(
[_queryProfiles:protected] => Array
(
)
[_enabled:protected] =>
[_filterElapsedSecs:protected] =>
[_filterTypes:protected] =>
)
[_defaultProfilerClass:protected] => Zend_Db_Profiler
[_connection:protected] => PDO Object
(
)
[_caseFolding:protected] => 0
[_autoQuoteIdentifiers:protected] => 1
[_allowSerialization:protected] => 1
[_autoReconnectOnUnserialize:protected] =>
)
dbname, gehört zum Array "_config"
_config, gehört zum Objekt "Varien_Db_Adapter_Pdo_Mysql"Code:_config['dbname']
Sollte so gehen, ansonsten beachten: http://php.net/manual/de/language.oop5.visibility.phpCode:$Varien_Db_Adapter_Pdo_Mysql->_config['dbname'] #bzw. die Variable die du per print_r()/var_dump() ausgeben lässt
Hm, okay. Und wie gebe ich das ganze nun aus?
$test = Mage::getSingleton('core/resource')->getConnection('core_read'); ->>> Das ist das Objekt
echo $test->Varien_Db_Adapter_Pdo_Mysql->_config['dbname'];
Kommt leider nichts, nicht mal ein Fehler.![]()
Wenn $test das Objekt ist, sollte das
Varien_Db_Adapter_Pdo_Mysql ist dabei nur der Name der Klasse, aus der das Objekt erstellt wurde. Du kannst das ganze auch mit print_r() selber durchtestenCode:$test->_config['dbname']
Code:print_r( $test ); print_r( $test->Varien_Db_Adapter_Pdo_Mysql ); // nix, nur Name, Objekt ist $test print_r( $test->_config ); print_r( $test->_config['dbname'] );
Vielleicht hilft dir das auch weiter: http://snippi.net/magento-get-databa...ecction-config
Der Datenbankname ist dann in
stehen.PHP-Code:$config->dbname
Grüße!
...zur Zeit außer Betrieb...
Vielen Dank euch beiden
Wenn ich das so eingebe, kommt:
"Fatal error: Cannot access protected property Varien_Db_Adapter_Pdo_Mysql::$_config in D:\xampp\htdocs\sbrendlemagtest\test2.php on line 15"
... scheint also zu gehen. Aber eine Ausgabe erhalte ich trotzdem nicht- Was bedeutet "protected" denn genau und wie löse ich diese Einschränkung?
Gruß Stefan
PS: Das Snippet geht! Wuhu, ein Traum- Danke dafür! Wie hast du das gefunden? Habe bestimmt 10 Google-Suchtabs offen und mich durch etliche Beiträge gearbeitet ...
![]()
Hi,
da ein "Fatal Error" kommt, würde ich nicht davon ausgehen, dass etwas zu gehen scheint
Kannst Du bitte mal den Code posten, damit ich sehen, was du genau gemacht hast?
Protected bedeutet, dass du lediglich in von der Klasse Varien_Db_Adapter_Pdo_Mysql erbenden Klassen auf $_config zugreifen darfst.
Daher erfolgt ja auch der Zugriff via getConfig, die dir eigentlich eine "Kopie" zurückgeben sollte.
Wie mir scheint, hast Du noch recht wenig Erfahrung mit objektorientierter Programmierung? Falls das zutreffend sein sollte,
kann ich dir nur empfehlen, dich ersteinmal mit den Grundlagen vertraut zu machen, bevor du dich an Magento gibst. Alles andere
wäre mehr als frustrierend und würde wahrscheinlich auch nicht sehr weit führen. Grundkenntnisse über die Funktionsweise des ZendFrameworks können bei der Arbeit mit Magento auch nicht schaden, da viele Konzepte verwandt werden oder ähnlich sind, die ZF-Doku aber um Längen besser ist (imho).
...zur Zeit außer Betrieb...
Da hast du recht, habe mit OOP noch nichts am Hut gehabt ...Wie mir scheint, hast Du noch recht wenig Erfahrung mit objektorientierter Programmierung?
Habe das Codeschnipsel aus Beitrag #6 einfach eingefügt; nicht innerhalb einer Klasse. Dann versteh ich mit deine Erklärung jetzt auch die Fehlermeldung
Kennt ihr einige gute Quellen, mit denen ich möglichst schnell in die OOP reinkomme? Habe schon viel mit PHP gemacht, aber noch nie was mit OOP
Danke euch,
Gruß Stefan![]()
Vielleichts tuts das hier: http://www.traum-projekt.com/forum/7...p-projekt.html
Ansonsten versorgt dich Google beim Stichwort "OOP Einstieg" mit mehr Resourcen als du lesen möchtest.
Dabei ist es beim Einstieg auch erst mal egal, in welcher Sprache er gestaltet ist. Wichtig ist, dass Du das Prinzip verstehst und verinnerlichst. Dann kannst Du es auf die Paradigmen jeder Sprache anwenden und dich mit deren Feinheiten beschäftigen.
Bei Fragen, fragen :=)
...zur Zeit außer Betrieb...
Alles klar, da werde ich mich mal in der Mittagspause einlesen
Leider geht das Codesnippet auf meiner Testinstallation, aber nicht auf dem fertigen Onlineshop (bzw. dem XAMPP Backup)
Fehler: Fatal error: Call to a member function getResourceConnectionConfig() on a non-object in D:\xampp\htdocs\quintessence1401\test4.php on line 7Zitat von neuephpdatei.php
Welche Mage-Versionen kommen da jeweils zum Einsatz?
[NACHTRAG]
Mach mal ein
und poste die Ausgabe hier.PHP-Code:var_dump(Mage::getConfig());
...zur Zeit außer Betrieb...
Meine Testbastelentwicklerungsinstallation -> neuste Version
Fertiger Onlineshop -> Magento Version 1.4.0.1
Gern
<?php
require_once 'app/Mage.php';
var_dump(Mage::getConfig());
$config = Mage::getConfig()->getResourceConnectionConfig("default_setup");
var_dump(Mage::getConfig());
$dbServer = $config->host;
$dbUser = $config->username;
$dbPass = $config->password;
echo $dbUser;
?>NULL
Fatal error: Call to a member function getResourceConnectionConfig() on a non-object in D:\xampp\htdocs\1401\test4.php on line 8
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)