Jump to content
php.lv forumi

Get data class


cucumber

Recommended Posts

  • Replies 32
  • Created
  • Last Reply

Top Posters In This Topic

Nevis Javas-asm, nevis php op-kopdi, bet bait-kodi tie ir.

PHP nebūt nav līdzīga Javai, Delfin. Atšķirību starp statisku vs dinamisku valodu zini (java-statiska, php-dinamiska)? Statiskai valoda mainīgo tipi nav fiksēti. Java drīzāk jāsalīdzina ar C++ kā statiska valoda.

 

Varbūt terminu statiska valoda nepareizi lietoju, bet ar to domāju statisku datu tipu izmantošanu.

 

Bubu...mashinkods (PC gadijuma Intel procesora instrukcijas) un Javai ir virtualaismashinkods, ja jau gribam but ljoti precizi:))

 

PHP ir scripts, jeb, kā jebkuram interetējamam kodam viņam ir vajadzīgs intepretators, jeb shaja gadījuma php.exe.

 

C,Delfi ir kompilatori, jeb no valodas tiek gjenereets kompileets kods, kuraa ir mashīnintrukcijas. Prieksh PC kompileta applikacija neies uz macintosha, jo macintosha procesors izmanto citadu instrukciju klastu (protams, par ko ari visi priecajas, ka Mac ir pargajis uz Intel) Attiecīgi ir tāds mehānismas, kā linkošana, kad tiek salikti visi atminjas un koda gabali vienkopus.

 

Java ir kautkur pa vidu. Par to visi lielie sava laikā diskutējai, kas tad ir Java, kompilators vai interpretators. Laikam palika pie viedoklja, ka kompilators, jo tiek gjenerets mashinkods.

Link to comment
Share on other sites

Nu dievs ar viņu, kas ir java :) Lai iemācītos oop ir dziļi vienalga, kādā valodā to dara, lai tik tā normāli oop atbalsta. Un php5 to dara pilnīgi pieklājīgā līmenī. Oop tomēr ir domāšanas veids, nevis kādu specifisku "oop funkciju" zināšana :)

Un pāris klasīšu izmantošana iekš visumā procedurāla koda nav oop. Tas iesākumam, protams ir jauki, jo ļauj kaut kādas lietas staipīt līdzi pa visiem saviem skriptiem, bet ne vairāk...

Kas attiecas uz klasi GetFile... Tādā izskatā viņa ir bezjēdzīga, jo aizvieto vienkāršu funkciju fopen(), kas tikai sarežģī visu pasākumu. Jēga būtu, ja tev failā glabājas kādi strukturēti dati, pie kuriem jātiek klāt/jāmaina/jāsaglabā. Tad labi būtu rakstīt klasīti speciāli šī faila datu apstrādei. Tipa tā (pielietot):

// atveram failu, izparsejam datus
$myFileContentHandler = new FileContentHandler($filePath);

// dabunam kaut kadu datu porciju
$head = $myFileContentHandler->getHeader();

// izmainam virsrakstu
$myFileContentHandler->setHeader($newHeader);

// saglabajam izmainas
$myFileContentHandler->save();

Šāda klase būtu paredzēta konkrēta tipa datu apstrādei, un iekļautu sevī visu ar to saistīto loģiku. Piemēram, ja tev tajos failos glabātos kaut kādi ziņojumi, tad tu visu šo ziņojumu apstrādes darbu veiktu caur šo klasi, nerūpējoties par zema līmeņa funkcijām darbam ar filesistēmu un datu izpārsēšanu... Parasti to dara ar datubāzē glabājamiem datiem... Lasi "design patterns" un citu iepriekš pieminēto literatūru. Skaidrāks kļūs

Link to comment
Share on other sites

Gundars: Pirmo reizi kautko dzirdu par virtuālu mašīnkodu. Vienmēr esmu dzirdējis un redzējis to saucam par bait-kodu: http://en.wikipedia.org/wiki/Bytecode (iz: http://en.wikipedia.org/wiki/Java_virtual_machine - A Java Virtual Machine (JVM), ... is a virtual machine that executes Java bytecode.)

 

Un linkošana ir pavisam cita opera. To tu nejauc te iekšā. No sources mašīnkodu ģenerē kompilators (vispārīgā gadījumā tas var ģenerēt arī starp-kodu, kuru kompilē vēlāk). Bet linkeris vāc kopā moduļus, kurus ir sakompilējis kompilators, lai izveidotu izpildāmas programmas kodu (exe/dll/...)

 

Piekasoties sīkumeim - php interpretators ir php5ts.dll/php4ts.dll nevis php.exe :)

 

Java jau ir divas lietas - kompilators, kas kompilē Javas source uz tās baitkodu. Un Java VM, kas ir tā izveidotā baitkoda interpretators. Tā man tas sanāk vienkāršoti skaidrojot, neņemot vērā JIT, kas ir arī kompilators.

 

C un Delfi nav nekādi kompilatori, bet valodas. Kompilators pēc būtības vispār ir kautkas, kas pārveido vienas valodas programmu uz kautkādu citas valodas programmu (vai tas būtu asm/mašīkodi/baitkodi/C-kods).

Link to comment
Share on other sites

Koda gabals, jautajums kapec ir vajadzigi definet ar var mainigos, ja kods bez viniem strada nevainojami?

class GetFile
{
 var $path;
 var $opentype;
 var $handle;

//  var $path;
//  var $opentype;
//  var $handle;


 function Setpath($path) 
 {
$this->blalbla=5; //ari stradas ?

$this->path = $path;
if (!file_exists($path)) 
	  $this->path = "The file not exists";
 }

Link to comment
Share on other sites

tāpēc ka tā ir fīča - klasei propertijus vari settot kādus gribi, nekur iepriekš viņus nedefinējot.

 

un ja tu rakstītu api documentāciju, tad pie variabļa definīcijas prasītos pierakstīt kas tas pa variabli.

Link to comment
Share on other sites

ok, tatad snak ja ir $this->somevariable, tad jabut var $somevariable.

Bet ja ir array, tad met ara erroru, array obligati jabut var $matrix?

Link to comment
Share on other sites

2 cucumber

Ja gribi rakstīt oop, pieradinies uzreiz pie oop paradigmas lietošanas. Vēlams rakstīt iekš php5, lietot "redzamības" deklarācijas - public, protected, private. Tāpat vēlams ievērot, ka bez ļoti īpašas vajadzības pieeja pie objekta īpašībām notiek tikai caur atbilstošām metodēm. Inkapsulācija saucās, un ir viens no oop pamatpostulātiem. Un protams, visām klases īpašībām jābūt definētām, un, vēlams, arī dokumentētām. Tas, ka var bez deklarācijas piešķirt vērtību kādam variablim nenozīmē, ka tā ir jādara. Pie sarežģītākām klasēm pats sajuksi savos variabļos, un pazaudēsi visas oop priekšrocības.

Pareizi tava klasīte vajadzētu izskatīties kaut kā tā:

class GetFile
{
 /**
  * path to file
  * @access private
  * @var string
  */
 private $path;
...

 public function setPath($path)
 {
$this->path = $path;	
 }
....
}

2w3rb0

tāpēc ka tā ir fīča

Nu vismaz smailu būtu pielicis :) Fīča = dokumentēts bugs. Cerams, ka 6 versijā šīs "fīčas" vairs nebūs, un viņa lamāsies par šādu stilu...

Edited by john.brown
Link to comment
Share on other sites

Ta ejam talak.

<?php
class VarGet
{
 var $pr;

 function doo()
 { 
$this->pr=20;
   echo $this->pr;  
   $this->pir=1010; 
  return $this->pr;
 }


}


$Vget= new VarGet;
$Vget->doo();

$v = $Vget->pir; //kas te isti notiek, sanak ja zin kads ir mainiga nosaukums ieksh klases (pir), tad mes vinu varam jebkura bridi pieskirts mainigajam pec klases inicializeshas, ka var izdarit otradak, izmainit vertibu , klase un vai ta ir pareiza doma vispar?
echo $v;
?>

Link to comment
Share on other sites

klase nav domāta mainīgo paslēpšanai... tiesa gan eksistē konstrukcija private/protected kā jau iekš kārtīga OOP (php5)

 

Par tavu jautājumu - eksistē jēdziens setters/getters

 

function getXYZ() { return $this->... }

function setXYZ($v) { $this->... = $v }

 

Un vispār, RTFM + OOP grāmatas

Link to comment
Share on other sites

Šī resursa mērķis ir apkopot PHP programētāju zināšanas un sniegtu iespēju gan iesācējiem, gan arīdzan profesionāļiem gūt atbildes uz sevi interesējošiem jautājumiem vienuviet.

 

Projekts, protams, ir nekomerciāls un balstās uz cilvēkiem, kuri savā brīvajā laikā ir gatavi dalīties pieredzē, atbildēt uz citu cilvēku jautājumiem, sniegt padomus un piedalīties diskusijās par viņus interesējošiem tematiem.

 

Nav laika lasit gramatas kodejot rodas jautajumi un gribas uzzinat uz tiem atbildes, jo neeis jau partraukt projektu un lasit gramatas, plus RTFM x) you joke, man blin refrence vienmer vala :)

-=Galva nav miskaste, lai piesarnotu vinu ar f-ju vardiem utt=-

Link to comment
Share on other sites

Nav laika lasit gramatas kodejot rodas jautajumi un gribas uzzinat uz tiem atbildes, jo neeis jau partraukt projektu un lasit gramatas, plus RTFM x) you joke, man blin refrence vienmer vala :)

-=Galva nav miskaste, lai piesarnotu vinu ar f-ju vardiem utt=-

 

Un kas es i dumsh, ka ziedoju laiku lasot visaadas graamatas, lai varetu peec tam atbildeet uz citu jautajumiem????

Link to comment
Share on other sites

cucumber: kurš tev liek piesārņot viņu ar fju vārdiem? Grāmatas jau nav references un manuāļi, kurās ir pliks fju saraksts (tam pietiek ar manuāli). Grāmatās tu vari palasīt kā rakstīt un organizēt labāk savu kodu. Neba jau mēs esam visu paši izdomājuši no zila gaisa. Daudz ko esam izlasījuši grāmatās. Tā ka palasi arī tu. Zināšanas no zila gaisa nerodas.

Link to comment
Share on other sites


×
×
  • Create New...