Jump to content
php.lv forumi

PHP OOP nozīme


mysql_query

Recommended Posts

Vai varat pateikt, kāda ir nozīme "Object-Oriented Programming", kas ir labāks, lietojot šo? Tik pat labi es varu lietot pliku funkciju.

 

 

Piemērs:

 

<?php
class Box
{
 var $contents;

 function Box($contents) {
   $this->contents = $contents;
 }

 function get_whats_inside() {
   return $this->contents;
 }
}

$mybox = new Box("Jack");
echo $mybox->get_whats_inside();
?>

Edited by mysql_query
Link to comment
Share on other sites

Te jau forumaa liekas ir bijushas daudzas diskusijas par OOP un taa lietderiigumu. Pameklee sheit: http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=site%3Aphp.lv+oop

 

Re ku kaut kas ko uz aatru roku atradu: http://php.lv/f/topic/1068-oop-stils/

 

Tiesa ir jaabuut labaakiem topikiem par to. Liekas kaadu laiku atpakalj veel bija kaartiigs flame war par to.

 

+ konstruktorus PHP5 laikos taisa taa

 

class Example {
 public function __construct() {}
}

Link to comment
Share on other sites

Man objektos visvairāk patīk tas, ka objekta mainīgie ir pieejami visās objekta funkcijās. Citā gadījumā šie mainīgie būtu jāpadod kā parametri vai jādefinē kā globālie katrā funkcijā. Vismaz tas man visvairāk iepatikās objektos, kad es par tiem pirmo reizi uzzināju. Tiesa, PHP ir tāds trūkums, ka katram mainīgajam un funkcijai ir jāraksta priekšā "$this->", pēc citām programmēšanas valodām tas liekas apgrūtinoši.

Link to comment
Share on other sites

Kverkagambo, tas ir plus.

 

class Foo {

 public $x, $y;


 function bar() {

   $this->x = 'bar';

 }

 function baz( $y ) {

   $this->y = 'baz';
   $y = 'foo'; // Ja būtu tā, nebūtu zināms par ko ir runa...

 }

}

Link to comment
Share on other sites

Kverkagambo, tas ir plus.

 

Tāpēc java piedāvā arī this.mainigais.

private int a;
function setA(int a){
 this.a = a;
}

 

Tas ir normāli, ja funkcijas arguments parasti ir nosaukts tāpat kā atbilstošais privātais mainīgais.

Edited by briedis
Link to comment
Share on other sites

Toties JAVA'aa ja nav defineets lokaalais metodes mainiigais ar taadu pashu vaardu kaa klases mainiigais, tad tas attieksies uz klases mainiigo nevis izveidos jaunu lokaalo mainiigo.

 

class Test {
 private int p;


 public void setP(int p) {
   this.p = p;
 }


 public int getP() {
   return p;
 }
}

 

IMO PHP vareetu padariit iisaak rakstaamu. Piemeeram tas ka nevar dariit shaadi mani ljoti tracina:

 

$array = array(); // var dariit :)
$array = []; // nevar dariit :(

 

Ieksh Ruby, piemeeram, pie instances atribuutiem var veersties shaadi:

 

class Test
 def increment
   @property++
 end
end

 

Kas man liekas eertaak un forshaak...

 

Tiesa taadas izmainjas man visticamaak nekad nesagaidiit :)

Edited by rATRIJS
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...