Avatar billede tefcke Nybegynder
28. februar 2003 - 16:17 Der er 7 kommentarer og
2 løsninger

Ang. variabler og funktioner i Objekter samt private og public!

Jeg sidder med flg. objekt definition:
#####
<?
class dbObject
{

  var $DB_USER;              // private
  var $DB_PASSWORD;          // private
  var $DB_HOST;              // private
  var $DB_DATABASE;          // private
  var $NUMBER_OF_QUERYS = 0;  // public

/* CONSTRUCTOR : private */
  function dbObject()
  {

    global $_CONFIG;
    $this->DB_USER    = $_CONFIG['DB_USER'];
    $this->DB_PASSWORD = $_CONFIG['DB_PASSWORD'];
    $this->DB_HOST    = $_CONFIG['DB_HOST'];
    $this->DB_DATABASE = $_CONFIG['DB_DATABASE'];

  }

/* Connect to MySQL database : public */
  function connect()
  {

    /* Try to connect to MySQL. Print out error if it fails */

  }

/* Disconnect from MySQL database : public */
  function disconnect()
  {

    /* Try to close connection to MySQL. Print out error if it fails */

  }

/* Get data from MySQL database : public */
  function get($QUERY)
  {

    /* Ask MySQL for data */

  }

/* Set (UPDATE, DELETE and SET) data into MySQL database : public */
  function set($QUERY)
  {

    /* Ask MySQL to update a table */

  }

/* Get current number of querys used */
    function getQueryCount()
  {

    return $this->NUMBER_OF_QUERYS;

  }

/* print MySQL error() : private */
  function PrintError($ERROR)
  {

    /* Print custom error */

  }

}
?>

#####
Formålet er at lave et funktions bibliotek som brugerne af et webhotel får stillet til rådighed ved at inkluderer dette.
Da brugeren har mulighed for at oprette dette database objekt, kan brugerne frit opdatere variablen $NUMBER_OF_QUERYS i objektet, samt kalde funktionen PrintError().
Dette er ikke hensigtsmæssigt, da det ikke skulle være en variabel/funktion som brugeren skulle have adgang til. Derimod skulle brugeren kunne få værdien af variablen $NUMBER_OF_QUERYS gennem funktionen getQueryCount().

Mit spg. går så på om man ligesom i Java og C(++) kan erklærer funktioner og variabler (snakkes om inde i det her database objekt) private, så de ikke er "synlige" uden for objektet?

Jeg har søgt fra ende til anden på php.net, uden resultat, så jeg ville lige høre om dette var muligt, eller om der var en metode til at "skjule" denne variabel fra brugeren?
Avatar billede Slettet bruger
28. februar 2003 - 16:19 #1
Det kan du ikke! :( Måske kommer det en nogle senere versioner!
Avatar billede alrua Nybegynder
28. februar 2003 - 16:24 #2
PHP understøtter ikke private methods i nuværende version, men hele OOP-delen bliver taget op til revision i en kommende version... :)
Avatar billede tefcke Nybegynder
28. februar 2003 - 16:25 #3
Hmm undkyld mit sprog, men hvad faen' er så meningen med at bruge objekter?

Så kunne man ligeså godt bare have en masse funktioner!


Er der så ikke i det mindste en måde hvorpå man kan komme uden om dette problem på?
Avatar billede Slettet bruger
28. februar 2003 - 16:25 #4
Måske kommer det i nogle senere versioner! - EVEN!

PHP er i sin grundessens bygget utrolig simpelt op (måske vil KOMPLEKST være det rigtige ord).
Hvilket giver mulighed for en masse sjusk... du kan jo i princippet tilføje ekstra properties til et objekt uden for klassen.
Der er heller ingen reel type-casting.
Og variabler skal ikke erklæres før brug!
Avatar billede alrua Nybegynder
28. februar 2003 - 16:27 #5
php er så simpelt så man _kan_ uden problemer bare bruge funktioner...den eneste grund til at bruge objekter er at så kan man samle det et sted... :P
Avatar billede Slettet bruger
28. februar 2003 - 16:28 #6
tefcke>>objekterne kan stadig bruges til at simplicificere koden.. desuden er det også brugbart når man ændrer i koden! Men ja du har ret...
Jeg tvivler på der er en måde at komme uden om det på!
Avatar billede alrua Nybegynder
28. februar 2003 - 16:28 #7
og selvfølgelig interne (men public) variable osv :)
Avatar billede tefcke Nybegynder
03. marts 2003 - 11:54 #8
Nåh, jeg kan ikke rigtig bruge det til noget hvis brugeren har adgang til selv at ændre "indholdet" af det til rådig stillede objekt.
Det ødelagde også rimlig meget mine planer om at implementerer noget statestik i objektet, da jeg ikke 100% ville kunne stole på at brugeren ikke havde fitlet med variablerne i objektet :/
Avatar billede tefcke Nybegynder
08. marts 2003 - 15:32 #9
I får lidt point for at have svaret på dele af spørgsmålet ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester