php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.08.2005, 21:48  
Gast
 
Beiträge: n/a
Standard Problem mit Sichtbarkeit von Variablen

Hallo,
ich hab folgendes Problem und bitte um Hilfe:

Habe ein CMS programmiert, welches alle Seiten über die index.php aufruft. Mit z.B http://xyz.de/index.php?show=admin wird automatisch die Datei ./include/admin.inc eingebunden. Bevor das jedoch passiert, wird in der index.php die Datei ./_func/constants.inc eingebunden. Dort werden eine Menge von Variablen nach folgendem Schema deklariert:
PHP-Code:
<?php
$MYSQL_HOST 
"localhost";
$MYSQL_PASSWORD "geheim";
// etc...
?>
Ebenfalls wurde bereits ./_func/mysql.inc eingebunden. Sie besitzt eine Funktion, die in $mysql_ref das Ergebnis von:
PHP-Code:
<?php
  mysql_connect
($MYSQL_HOST,$MYSQL_USER,$MYSQL_PASSWORD);
?>
speichert. Die Variable $mysql_ref wurde bereits in der index.php deklariert und auf NULL gesetzt. Wenn ich eine Datei( wie im Falle von mysql.inc) includiere müsste doch nicht in die lokale, sondern in die globale Variable geschrieben werden!?

Bin bei jeder Hilfe sehr dankbar, weil ich das CMS(mit ca. 180.000 Quellcodebuchstaben ) nun fertig habe, es aber auf meinem Server läuft. Auf dem Webserver im Internet kann $mysql_ref nicht finden, weil mysql_query $mysql_ref als falschen MySQL-Link bezeichnet. Die mysql_connect(...) Funktion liefert allerdings das richtige Ergebnis, nur wird es eben nicht geschrieben

Vielen Dank
Creative-Grafix
Flip
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.08.2005, 22:09  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi "Flip".

Du schreibst, dass du die Verbindung in einer Funktion aufrufst. Folglich müsste die Variable auf keinem deiner Server im global scope mit dem Handle beschrieben werden - es sei denn, du benutzt GLOBALS (oder global? - ist zu lange her, dass ich das letzte mal gesündigt habe *g).

Wie wäre es denn man damit, alle Config-Vars in ein Array (oder auch Konstante) zu schreiben oder über ein Ojekt verfügbar zu machen und ebenso die Datebnbankverbindung in einer Klasse zu kapseln? Das hört sich ja alles schon ein wenig Abenteuerlich an so.

Liebe Grüße,
Basti
Basti ist offline  
Alt 14.08.2005, 22:28  
Gast
 
Beiträge: n/a
Standard Das Abenteuer kann beginnen :D

Hi,
ähm, klar ist ein wenig "abenteuerlich" , aber wenn ich doch eine Variable, praktisch in der äußersten Schale von diesem ganzem Script deklariere, dann müsste diese von überall lesbar sein, und ich verstöße gegen keines der EDV Gesetze ! Naja gut, also dann werde ich es mit einem globalem Array machen, weil ein Objekt wieder tausend verschachtelungen hat... Also wie müsste ich des denn dann machen? Ich will einfach eine Variable, in dieser index.php deklarieren, und dann von überall, auch wenn es inkludiert wurde, und darin noch 1000 includes war; immer sichtbar ist. Gibt's nicht ein Equivalent zu einer, mit"public" deklarierten Variable eine Visual Basic-Moduls?
Wenn mein Gedanke falsch ist, dann wär ich für jede andere Lösung auch bereit.

Flip
Creative-Grafix.net
 
Alt 14.08.2005, 23:25  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

http://de2.php.net/manual/de/reserve...iables.globals
Chr!s ist offline  
Alt 14.08.2005, 23:34  
Gast
 
Beiträge: n/a
Standard

Auf der Seite war ich die letzten Tage 100x, aber ich seh ich des richtig, dass Variablen, in der obersten Ebene gleichzusetzen sind mit den $GLOBALS[...] ? Ich würde halt gerne die Datei constants.inc global machen. Alle lokalen Variablen sollen überall sichtbar werden!

Flip
Creative-Grafix.net
 
Alt 15.08.2005, 00:37  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Passender ist hier folgende Manual-Seite:

http://php.net/manual/en/language.variables.scope.php

Aber die wirst du ja auch schon abgegrast haben. Dennoch: Was ich meinte ist, dass Funktionen natürlich ihren eigenen Namensraum haben:

PHP-Code:
<?php
function foo()
{
    
$bar 1;
}
$bar 0;
foo();
echo 
$bar;
?>
Das spuckt natürlich 0 aus, nicht 1. Aber das wirst du ja sicherlich berücksichtigt haben, wenn du in der Funktion auch auf die Globals zugreifen kannst bzw. überhaupt, wenn du bereits ein CMS programmiert hast.

Für mich wäre Folgendes erstmal sauber:

PHP-Code:
<?php
// config.php
$config['mysql']['host'] = 'localhost';
$config['mysql']['user'] = 'paul';
$config['mysql']['password'] = 'geheim';

// mysql.php
function database_connect($host$userpassword)
{
    
$handle mysql_connect($host$user$password) or die(mysql_error());
    return 
$handle;
}

// index.php
$database database_connect($config['mysql']['host'], $config[....]); 
?>
Wenn du die Konfiguration wie gehabt betreibst, dann ... keine Ahnung, ob du damit gegen EDV-Gesetze verstößt ... in jede Fall musst du während der ganzen Programmierug auch im hintersten Eck der Anwendung im Blick haben, wie deine Config-Vars denn nun heißen, um diese nicht versehentlich zu überschreiben. So hast du immerhin nurnoch eine Variable. Und, wenn du die Funktion wie von mir vorgeschlagen aufbaust, dann bistdu mit dieser unabhängig von dem Namen irgendwelcher Config-Vars, sondern hast nurnoch eine klar definierte Shnittstelle: Du übergibst mir die drei Parameter und ich breche entweder die ganze Geschichte ab (wobei diese Entscheidung eigentlich auch nicht in die Funktion gehört - für meinen Geschmack) oder ich geb dir das DB-Handle zurück.

Basti
Basti ist offline  
Alt 15.08.2005, 09:01  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von FlipKnoT
Ich würde halt gerne die Datei constants.inc global machen. Alle lokalen Variablen sollen überall sichtbar werden!
Wenn die Datei schon 'constants' heißt: warum verwendest Du keine Konstanten? Die sind, im Gegensatz zu Variablen, nämlich überall bekannt.
 
Alt 15.08.2005, 18:45  
Gast
 
Beiträge: n/a
Standard

Hi,
@Meikel: da hast du Recht, aber ich hab zuerst vorgehabt, die Datei nur mit Konstanten zu bestücken. Jedoch sind nicht alle Variablen konstant, weil sich so manches einfach ändert, in manchen Scripts. War zu faul, sie umzutaufen !
Flip
Creative-Grafix.net
 
Alt 15.08.2005, 19:15  
Gast
 
Beiträge: n/a
Standard

Ich bin ein fauler Hund und verwende deshalb grundsätzlich Konstanten u/o Attribute. Im Bedarfsfalle wird mal ein Array mit einem Sack voll Parameter mitgegeben...
 
Alt 19.08.2005, 01:03  
Gast
 
Beiträge: n/a
Standard

Manchmal find ich echt, dass ich für mein Alter usw... sehr gut programmieren kann. Jedoch ging mein Programm mit $GLOBALS[...]. Mein Problem lag ganz woanders! Und das stinkt mir nun sehr! Das Problem war, dass SQL-Befehle nicht ausgeführt werden konnten, weil jeder Tabellenname mit cg_... angeht und ich aber alle Abfrage mit CG_... mache. Windows hat die Tabellenname nicht richtig gespeichert, sonder alles klein. Hier nun das CMS: http://www.creative-grafix.net ! Und an alle danke nochmal! Ich hab während dessen alles umprogrammiert, und hab jeder Funktion eine Referenz auf das $config Array gegeben!
mfG Flip
Creative-Grafix.Net
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variablen problem Basti-asd Datenbanken 6 29.10.2007 12:56
Variablen problem Basti-asd Datenbanken 0 28.10.2007 15:07
Problem mit variablen max-dhom HTML, Usability und Barrierefreiheit 1 09.07.2007 16:03
unerklärliches Leeren von Variablen KuShi PHP Tipps 2007 2 08.07.2007 15:19
Problem mit globalen Variablen noBody PHP Tipps 2007 9 29.03.2007 12:35
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
Variablen Problem Andree PHP Tipps 2006 3 28.04.2006 02:17
Problem mit INSERT und variablen. dattelpalme PHP Tipps 2006 1 10.04.2006 22:12
problem mit session bzw übergeben von variablen! PHP Tipps 2005 21 16.05.2005 03:20
Problem mit übergabe von Variablen! stefan-miti PHP Tipps 2005 7 11.02.2005 18:54
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
Problem mit Sessions in mehreren Frames Chr!s PHP Tipps 2004 10 30.10.2004 18:52
Variablen aus den Formular sind nicht mehr verfügbar PHP Tipps 2004 6 30.10.2004 13:31
Problem mit zwei variablen - löschen - MySQL PHP Tipps 2004 9 17.10.2004 20:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php sichtbarkeit von variablen, php variablen sichtbarkeit, sichtbarkeit von variablen php, php sichtbarkeit globale varible, sichbarkeit variablen php, variablen und sichtbarkeit php, sichtbarkeit von variablen in html php, php sichtbarkeit variablen, sichtbarkeit php variable, variablen sichtbarkeit php, globale sichtbarkeit von variablen php, sichtbarkeit von variablen bei vb6

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.