php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 30-10-2003, 14:37
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard klassen innerhalb von klassen verwenden

Ihr kennt bestimmt das Problem, man hat ein paar nette klassen gebaut, möchte dieser aber innerhalb einer anderen klasse verwenden.
man kann keinen :: operator verwenden weil man ein objekt braucht.
extend geht auch nicht weil man nicht mehrfach extenden kann.. (Mutter->Kind geht, Mutter->Kind->enkel geht nicht)

jetzt die frage, was ist die stilistisch beste Möglichkeit andere Objekte innerhalb eines Objekts zu benutzen?

ein paar Möglichkeiten die mir bisher unterbreitet wurden mal hier:

global $objekt;
// wäre wohl stilistisch nicht das wahre, zudem scheint es bei mir nicht zu funktionieren.

innerhalb einer methode ein neues objekt erstellen, verwenden und unsetten oder gegebenenfalls als var deklarieren.
(man könnte ja zum beispiel einen zweiten, dritten, etc .. "konstruktor" für die klassen machen, die man braucht.)

als referenz überliefern
einer methode, oder dem konstruktor als referenz ein bestehendes objekt überliefern.
wäre glaube ich die beste methode, da man keinen overhead erzeugt durch überflüssige doer doppelt deklarierte klassen.

was geht noch .. ?
Mit Zitat antworten
  #2 (permalink)  
Alt 30-10-2003, 14:47
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard Re: klassen innerhalb von klassen verwenden

Zitat:
Original geschrieben von rythms
man kann keinen :: operator verwenden weil man ein objekt braucht.
ach?
Zitat:
extend geht auch nicht weil man nicht mehrfach extenden kann.. (Mutter->Kind geht, Mutter->Kind->enkel geht nicht)
echt?

so vererben kannst du, fragt sich bloß, ob das sinnvoll ist...
wenn du von mutter ü+berkind zu enkel ne fortwährende spezialisierung hast,dann ja
wenn's dir nur drum geht, die funktionalität von mutter auchinenkel nutzen zu können, is das keine spezialisierung und daher würd ichdas auch nicht vererben sondern mit ner referenz machen

die variante mit referenzen gefällt mir persönlich am besten, da hast du natürlich in deiner klassendeklaration ne objektvariable, die diese referenz aufnimmt
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #3 (permalink)  
Alt 30-10-2003, 20:00
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich wollt's ja nur verdeutlichen

Es wäre ja nicht der sinn einer klasse die alle zu vererben, ich will ja nicht meine sql klasse mit meiner foren klasse o.ä. zusammen haben ..

also mit referenzenis dann wohl die beste lösung..
Mit Zitat antworten
  #4 (permalink)  
Alt 06-11-2003, 15:07
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

tja, funktioniert nur leider nicht wirklich, da php eine kopie der referenz erstellt und nicht die referenz selber benutzt ..

erst in php5 ist dies der fall.
Mit Zitat antworten
  #5 (permalink)  
Alt 06-11-2003, 15:09
MoRtAlAn
 PHP Master
Links : Onlinestatus : MoRtAlAn ist offline
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
MoRtAlAn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

$obj =& new Classname;

willst du sowas ??

es gibt ne möglichkeit, ne klassenhierarchie aufzubauen, so wie du es willst...

du willst doch sowas:
Mutter->Kind->enkel

mal vereinfacht:
class Mutter;

class Kind extends Mutter;

class Enkel extends Kind;

oder hab ich da jetzt was falsch verstanden ?

gruss
Mit Zitat antworten
  #6 (permalink)  
Alt 06-11-2003, 15:19
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

eigentlich geht es mir darum, dass ich jedwedige klasse in einer anderen verwenden kann, inklusive korrektem zugriff auf die methoden/eigenschaften.
mit extends ist es nicht getan.

nehmen wir mal an:
ich habe eine error klasse.
sie speichert mittels methode eine fehlermeldung in einer eigentschaft (array).
diese klasse deklariere ich ganz normal.

dann habe ich zwei andere klasse, die diese klasse benutzen um fehlermeldungen zu speichern.

diese fehlermeldungen werden im nachhinein von der error klasse ausgegeben.

dazu übergebe ich die error klasse als referenz an den konstruktor der beiden anderen klassen.

da php hier jetzt eine kopie erstellt und nicht die referenz benutzt (was laut manual performancetechnisch nichts ausmacht) habe ich im endeffekt dreimal die error klasse, aber die jeweiligen fehlermeldungen der beiden klassen sind in der zur klasse gehörigen kopie der error klasse.

also kann ich mit meiner ürsprünglichen error klasseninstanz nicht die in den beiden anderen klassen gespeicherten fehlermeldungen ausgeben.
Mit Zitat antworten
  #7 (permalink)  
Alt 06-11-2003, 15:36
MoRtAlAn
 PHP Master
Links : Onlinestatus : MoRtAlAn ist offline
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
MoRtAlAn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

so nicht direkt, das ist richtig...

aber über einen umweg geht es...

du brauchst eine klasse, die dir ein objekt erstellt...

über diese klasse instanziierst du alle anderen klassen (methode) und übergibst die objekte als referenz beim instanziieren gleich weiter...

auf diese art hast du folgendes ergebnis...

$objBasis (basisklasse, die die anderen klassen instanziiert)
$objChild1

machst du jetzt ein print_r($objBasis) hast du das objekt $objChild als referenz

und machst du ein print_r($objChild1) hast du alle methoden der klasse ($objBasis) zur verfügung...

meinst du sowas ??

gruss
Mit Zitat antworten
  #8 (permalink)  
Alt 06-11-2003, 15:39
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

wenn du ne refernz übergibst, warum macht php ne kopie?
PHP-Code:
class a
{
  var 
$error;

  function 
a(&$error)
  {
    
$this->error=&$error;
  }
}

class 
b
{
  var 
$error;

  function 
b(&$error)
  {
    
$this->error=&$error;
  }
}

$err=&new error();

$a=new a($err);
$b=new b($err); 
__________________
Ich denke, also bin ich. - Einige sind trotzdem...

Geändert von mrhappiness (06-11-2003 um 15:46 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 06-11-2003, 15:43
TBT
  Moderator
Links : Onlinestatus : TBT ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.787
TBT befindet sich auf einem aufstrebenden Ast
TBT eine Nachricht über ICQ schicken TBT eine Nachricht über AIM schicken TBT eine Nachricht über Yahoo! schicken
Standard

@Happy:

in deinem Beispiel macht er eine Kopie
du mußt in der Funktion auch eine Referenz annehmen!

PHP-Code:
function a( & $error
__________________
TBT

Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!


PHP 2 AllPatrizier II Browsergame
Mit Zitat antworten
  #10 (permalink)  
Alt 06-11-2003, 15:47
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

korrigiert, ich werd alt, da kommt sowas schon mal vor
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #11 (permalink)  
Alt 06-11-2003, 16:14
Jointy
 Junior Member
Links : Onlinestatus : Jointy ist offline
Registriert seit: Dec 2002
Ort: HGW
Beiträge: 94
Jointy ist zur Zeit noch ein unbeschriebenes Blatt
Jointy eine Nachricht über ICQ schicken
Standard

hy... also ich mache es nach der method hier und es funzt wunderbar

PHP-Code:
<?php

class db
{
    function 
db()
    {
    }

    function 
sql_query()
    {
    }
}

class 
dbum
{
    var 
$db;
    
// Constructor bekommt nur die Referenz von object db
    
function dbum(&$db)
    {
        (!
is_object($db)) $this->db FALSE $this->db $db;
    }

    function 
login()
    {
        
$res $this->db->sql_query("SELECT bla bla bla");
    }
}


$db = new db();

$db->sql_query("UPDATE bla bla bla")


$dbum = new dbum($db);

$dbum->login($_POST["user"] , $_POST ["pass"]);

// Object DB immer noch nutzbar
$db->sql_query();


?>
Mit Zitat antworten
  #12 (permalink)  
Alt 06-11-2003, 16:26
TBT
  Moderator
Links : Onlinestatus : TBT ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.787
TBT befindet sich auf einem aufstrebenden Ast
TBT eine Nachricht über ICQ schicken TBT eine Nachricht über AIM schicken TBT eine Nachricht über Yahoo! schicken
Standard

was hat Happy denn gerade geschrieben

außerdem machst du hier
PHP-Code:
$db = new db(); 
gerade eine Kopie.
Schreibe dies mal als
PHP-Code:
$db = & new db(); 
__________________
TBT

Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!


PHP 2 AllPatrizier II Browsergame
Mit Zitat antworten
  #13 (permalink)  
Alt 06-11-2003, 23:10
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mortalan's weg war das gesuchte denk ich mal ..
allerdings wird auch dort eine kopie erstellt, allerdings dadurch angeglichen, dass in den "kind"objekten auch $this verwendet wird wenn ich etwas in einer variable speicher und dies dann nicht im kindobjekt liegt, sondern im basisobjekt.

eventuell werd ich das ganze morgen mal testen und dann code & print_r ergebnisse posten.

trotzdem wart ich da lieber einfach auf php5, dann geht das ganze sauberer.
Mit Zitat antworten
  #14 (permalink)  
Alt 06-11-2003, 23:56
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

wenn du meinen (korrigierten) vorschlag nimmst, hast du überall ds gleiche objekt, da du überall mit referenzen gearbeitet hast...
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #15 (permalink)  
Alt 07-11-2003, 10:19
MoRtAlAn
 PHP Master
Links : Onlinestatus : MoRtAlAn ist offline
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
MoRtAlAn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

japp... entweder mrhappies vorschlag oder meinen richtig umgesetzt... wobei meiner umständlicher ist, da du alles über ein basisobjekt machst, meine lösung aber halt für meine Anforderungen entwickelt ist...

kann halt auch intern objekte tauschen und überschreiben und methoden zwischen klassen hin und herschieben, da alles über die basisklasse registriert ist
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

kostenloser PHP-Editor Codelobster ansehen kostenloser PHP-Editor Codelobster

Kostenloser PHP, HTML, CSS, JavaScript editor (IDE) - Codelobster PHP Edition

13.03.2019 Berni | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
Lazy Load Plugin für jQuery

Das Lazyload Plugin, lädt Bilder nach, wenn sie im Viewport sichtbar werden.

10.03.2019 phpler | Kategorie: JQUERY-PLUGINS
WeltExplorer v1.0

WeltExplorer v1.0 ist ein Dateimanager zum Browsen und Operieren im Dateisystem. Bei installiertem cURL können Ordner und Dateien zu entfernten FTP-Servern hochgeladen bzw. von diesen heruntergeladen werden, etwa zum Erstellen von Backups oder Mirrorsites

06.02.2019 weltvolk | Kategorie: PHP/ File
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:54 Uhr.