[php] vraagje over OOP

Pagina: 1
Acties:

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Er zijn mij een aantal dingen niet echt duidenlijk over OOP.

Ik wil me site overnieuw maken en wil dit is in OOP doen.

Maar wat is nu het verschil (wat is er beter aan) tussen een bestand functions.php en daar al de functies in gooien of een class bestand met classes en functies in?

En in een class() {} kunnen daar alleen functies in of ook andere dingen?

Dus zou je ook een class op kunnen roepen en dat die dan een pagina genereert?

edit:
zijn er ook nog dingen waar ik op moet gaan letten als ik OOP wil programeren?

www.dannyhiemstra.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:25
Misschien moet je eerst maar eens een boek gaan lezen over OOP. Wat het inhoud, wat de voordelen zijn, ...

https://fgheysels.github.io/


Verwijderd

Op vrijdag 15 maart 2002 14:37 schreef FireFoxx het volgende:
Maar wat is nu het verschil (wat is er beter aan) tussen een bestand functions.php en daar al de functies in gooien of een class bestand met classes en functies in?
Eigenlijk niks, maar daar is OOP ook niet voor. Als je OO programmeert stop je functies bij elkaar die bij elkaar horen en van toepassing zijn op het object waar je het in stopt. :P
En in een class() {} kunnen daar alleen functies in of ook andere dingen?
Ook variabelen (declareer je met var $varnaam;)


Probeer eerst bovenstaande artikelen zodat je en goed beeld krijgt van wat OOP inhoudt en waarvoor je het wel en niet moet gebruiken. Dat is een goed begin.

Verwijderd

Als je Engels moeilijk vindt:
PHP: OOP Basics op http://www.phpfreakz.nl

Verwijderd

Op vrijdag 15 maart 2002 14:55 schreef gillesdegrote het volgende:
Als je Engels moeilijk vindt:
PHP: OOP Basics op http://www.phpfreakz.nl
het gaat ervan uit dat je reeds bekend bent met objectgeorienteerd programmeren (OOP) en legt uit hoe je het kunt doen met PHP.
En dat is nou net het detail ;)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 15 maart 2002 14:55 schreef gillesdegrote het volgende:
Als je Engels moeilijk vindt:
PHP: OOP Basics op http://www.phpfreakz.nl
Dat vindt ik nou niet echt een geweldige tutorial eigenlijk :{

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Ik heb net die tut zitten lezen op phpbuilder en nu ben ik gaan proberen.
Ik heb nu dit als classes.php:
PHP:
1
<?class print_memberlist {    var $aantal;  var $selects;  var $order;    function set_aantal($new_aantal) {    $this->$aantal = $new_aantal;  }  function return_aantal() {    return $this->$aantal;  }  function set_selects($new_selects) {    $this->$selects = $new_selects;  }  function return_selects() {    return $this->$selects;  }  function set_order($new_order) {    $this->$order = $new_selects;  }  function return_order() {    return $this->$order;  }    function print_list()  {    $sql = "SELECT $this->selects FROM cs_login ORDER BY $this->order LIMIT 0,$this->aantal";    echo $sql . "<br>" . $this->return_order();    $result = mysql_query($sql);    while($row = mysql_fetch_array($result)) {     while(list($key,$var) = each($row)) {      echo $var . " - ";     }     echo "<br>\n";    }  }}?>

En dit als index.php:
PHP:
1
<? $dbhost = "localhost";$dbname = "chatstar";$dbuser = "chatstar";$dbpasswd = "brothers";$db = mysql_connect("$dbhost", "$dbuser", "$dbpasswd");mysql_select_db("$dbname",$db);include("classes.php");?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head>    <title>Untitled</title></head><body><?$REG_AANTAL = 10;$REG_SELECTS = "star_id, star_usernaam, star_email";$REG_ORDER = "star_usernaam ASC";$ml = new print_memberlist();$ml -> set_order($REG_ORDER);$ml -> set_aantal($REG_AANTAL);$ml -> set_selects($REG_SELECTS);$ml -> print_list();?></body></html>?>

Het probleem is nu dat die dit als echo van de sql geeft:
SELECT FROM cs_login ORDER BY LIMIT 0,

www.dannyhiemstra.nl


  • Grum
  • Registratie: Juni 2001
  • Niet online
zet aub geen spaties om je '->' dat is enorm lelijk en maakt het niet leesbaarder.

[edit]
als je nou ECHT die tutors AANDACHTIG had gelezen had je geweten dat
code:
1
$this->$order = $new_selects;

fout is (iig zoals jij et bedoeld).

probeer es
code:
1
$this->order = $new_selects;

  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Dat van die spaties, dat is natuurlijk puur persoonlijk. De een vind spaties mooier dan de ander.

Zelf doe ik functie( arg1, arg2 ) maar vaak zie je ook functie (arg1,arg2)

Gelukkig is iedereen vrij om te doen wat hij wil (behalve als je je aan opmaak regels dient te houden natuurlijk :P)

Verwijderd

Op vrijdag 15 maart 2002 16:26 schreef eborn het volgende:
Dat van die spaties, dat is natuurlijk puur persoonlijk. De een vind spaties mooier dan de ander.

Zelf doe ik functie( arg1, arg2 ) maar vaak zie je ook functie (arg1,arg2)

Gelukkig is iedereen vrij om te doen wat hij wil (behalve als je je aan opmaak regels dient te houden natuurlijk :P)
Uit het feit dat hij spaties op die plaats gebruikt krijg je het idee dat hij niet weet wat die -> precies is. Het is namelijk geen operator. Als je in bijv. Java dit doet:
code:
1
System . out . println("Blaa");

wordt je ook voor gek verklaard.

  • vinnux
  • Registratie: Maart 2001
  • Niet online
PHP is vanuit nature niet bedoeld om OOP toe te passen.
Het is er later pas bij gemaakt. Er moet gezegt worden dat de mogelijkheden ook beperkt zijn.
Dit zijn o.a. de beperkingen :
- Scope van variabelen is altijd public
- Overloading is niet mogelijk

Dit zijn wel de grootste nadelen.

Nou het verschil tussen een klasse functions en OOP.

In OO zou jouw klasse functions een zogenaamde STATIC librarie zijn waar de wat functies aanroept. Dit zijn functies die algemen functies uitvoeren en die je niet tot een specifiek object kunt specificeren. Ik bedoel niet alles valt altijd OO te doen.

Objecten zijn een groepering van variabelen functies die een gezemalijk doel en verantwoordelijk hebben. Bijvoorbeeld een object stoplicht is zelf verantwoordelijk ervoor dat zijn ligt wel op rood springt. En het heeft een bepaalt aantal functies zoals zetOpRood() die alleen maar specifiek voor dat object gelden.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 15 maart 2002 16:52 schreef vgouw het volgende:
PHP is vanuit nature niet bedoeld om OOP toe te passen.
Het is er later pas bij gemaakt. Er moet gezegt worden dat de mogelijkheden ook beperkt zijn.
Dit zijn o.a. de beperkingen :
- Scope van variabelen is altijd public
- Overloading is niet mogelijk
http://www.php.net/manual/en/ref.overload.php :9

Oke het is nog experimenteel... Maar het komt er aan... >:)

Maar ik als geen OOP kenner, weet nog niet echt wat het voordeel is van overloading. Kan je misschien wat er over uitleggen?

Programmer - an organism that turns coffee into software.


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op vrijdag 15 maart 2002 17:08 schreef LuCarD het volgende:
Maar ik als geen OOP kenner, weet nog niet echt wat het voordeel is van overloading. Kan je misschien wat er over uitleggen?
Dan heb je bijvoorbeeld een stringklasse waarmee je de +operator overload zodat je die kan gebruiken om zo...
PHP:
1
<?class MyString{    var $content = '';    // Constructor enzo hier...        operator+(&amp;$a, &amp;$b)    {         return $a->content . $b->content;    }};$stringA = new MyString('Hello,');$stringB = new MyString(' World!');$stringC = $stringA + $stringB; // 'Hello, World!'?>

...de strings samen te voegen. Is ws niet helemaal correct, maar geeft wel de mogelijkheden aan.

edit:
Dat is dus operator-overloading, ik zie in die link van je ook wat andere mogelijkheden van overloading.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 15 maart 2002 17:08 schreef LuCarD het volgende:
http://www.php.net/manual/en/ref.overload.php :9

Oke het is nog experimenteel... Maar het komt er aan... >:)

Maar ik als geen OOP kenner, weet nog niet echt wat het voordeel is van overloading. Kan je misschien wat er over uitleggen?
Stel je hebt een klasse 'rechthoek' (jaja daar is het standaard voorbeeld!). Deze kun je tekenen door de methode teken() aan te roepen.

Nu is een vierkant een speciale rechthoek, dus we gaan de klasse vierkant laten erven van rechthoek. Maar als we teken() willen aanroepen dan willen we niet dat ie een rechthoek tekent, maar een vierkant! Dus moeten we de methode teken() opnieuw schrijven (en die we van vierkant kregen overschrijven dus) om er voor te zorgen dat ons vierkantje ook echt een vierkant tekent :P
Pagina: 1