Jump to content
php.lv forumi

2 skripti


Sliipeetais

Recommended Posts

Esmu nolēmis savus uzrakstītos PHP skriptus reizi pa reizei iemest šeit, lai tos apskata profesionāļa acs un izsaka savu viedokli, citādi, es labāk skriptēt neiemācīšos.

 

Pirmās ir funkcijas, ar kuru palīdzību ir ērtāk veidot html tabulas:

 

function caption($caption) {

 $table="  <caption>$caption</caption>\n";
 return $table;

}

function header() {

 $table="  <tr>\n";
 foreach(func_get_args() as $item) {
	 $table.="    <th>$item</th>\n";
 }
 $table.="  </tr>\n";
 return $table;

}

function head($id='default') {

 $table="<table id=\"$id\">\n";
 return $table;

}

function body($array, $header='') {

 $table="  <tr>\n";
 if(!empty($header)){
	 $table.="    <th>$header</th>\n";
 }
 foreach($array as $item) {
	 $table.="    <td>$item</td>\n";
 }
 $table.="  </tr>\n";
 return $table;

}

function foot() {

 $table="</table>\n";
 return $table;

}

 

Nākamās funkcijas paredzētas dažādu FORM elementu izveidošanai:

 

function form_h() {

 $form="<form method=\"POST\" action=\"$_SERVER['PHP_SELF']\">\n";
 return $form;
 
}

function form_f() {

 $form="</form>\n";
 return $form;
 
}

function textbox($size, $name, $value='') {

 $form="<input type=\"text\" name=\"$name\" value=\"$value\" size=\"$size\" />\n";
 return $form;

}

function checkbox($name, $value, $checked='') {

 $form="<input type=\"checkbox\" name=\"$name\" value=\"$value\" $checked />\n";
 return $form;

}

function groupbox_h($legend) {

 $form="<fieldset style=\"padding: 2\">\n<legend>$legend</legend>\n";
 return $form;

}

function groupbox_f() {

 $form="</fieldset>\n";
 return $form;

}

function dropdownbox_h($name) {

 $form="<select size=\"1\" name=\"$name\">\n");
 return $form;

}

function dropdownbox_b($value, $text, $selected='') {

 $form="<option value=\"$value\" $selected>$text</option>\n";
 return $form;

}

function dropdownbox_f() {

 $form="</select>\n";
 return $form;

}

Edited by Sliipeetais
Link to comment
Share on other sites

Nu lab OOP nevajag, ja nav pašam skaidrības. Man jau nu OOP patīk. Bez uz templeišu izvadi der pastīties, nebus ar rociņām pašam jāizsauc tās head/body/foot fjas. Viss notiksies kandrīz automātiski

Link to comment
Share on other sites

nu oop ir gauzjaam vienkaarshi

 

tavaam funkcijaa izdari shaadi:

 

class nosaukums {

// sheit ieliec taas funkcijas

}

 

peec tam nodefinee klasi.

 

$klase = new nosaukums();

 

peec tam vari izsaukt savas funkcijas no klases

 

$klase->header() ;

 

viss straadaa taa pat kaa ar funkcijaam tikai priekshrociiba, ka tu tagad vari arii veidot klases mainiigos (var) un izmantot konstruktorus utt.

Link to comment
Share on other sites

Lūk, tieši šo priekšrocību es nesparotu. Klases mainīgos? Labi, es saprotu, man ir mainīgais, kuru var izmantot visas šīs funkcijas un šis mainīgais ir tikai iekš klases. Taču manā gadījumā neviens šāds mainīgais, šķiet, nav vajadzīgs.

 

Un kas ir konstruktori?

Link to comment
Share on other sites

piemeeraa abas funkcijas var izmantot vienu klases mainiigo. sho klases mainiigo ar ii var izmantot aareeji. nu ceru, shis koda gabalinjsh dariis tev gaishaaku galvu.

 

klase nosaukums {
var $mainiigais = 'viens';
 function viens () {
   return $this->mainiigais;
 }
 function divis () {
   return $this->mainiigais;
 }
}

 

konstruktors ir taada funkcija, kur palaizjot nodefineejot klasi.

Link to comment
Share on other sites

Sliipeetais saproti, php nav namespaces. Tās var tur realizēt ar klasēm. Tagad tev kā ir tās funkcijas - visas vienā kaudzē, nesmuki. Nosaukumui var pārklāties vai vēl kas. A tu varētu uztaisīt klases - vienu html failam, vienu - tabulām, vienu - meņucim, vienu - formām, utt. Un tad darīt apmēram šādi:

<?php
  $page = new html('mans title');

  $table = new table('caption');
  $table->addRow('aa', 'bb', 'cc');
  $table->addRow('aa'...);

  $form = new form('add.php', 'post');
  $form->addTextInput('name', $maxlength, ...);

  $page->insert($table->getHtml());
  $page->insert($form->getHtml());

  $page->display();   
?>

Nu vai šitā kods nepaliek smukāks, tb. loģiskāks? A tavā gadījumā būs kaudz ar funkciju izsaukumiem, un nezinātājām būs jāskātās, kādam elementam, kura funkcija ko dara.

Link to comment
Share on other sites

nu tabulu funkcijai piemeeram tajaa mainiigajaa var iemest tabulu saturu, liidz ar to tev nevajadzees speciaali kaut kur piegalabaat datus, vienkaarshi ar funkciju pieliek rindu un tie dati jau saglabaajas tajaa mainiigajaa. atkal ar beigu funkciju nosleedz tabulu un izvada. vismaz es taa esmu dariijis un man likaas eerti.

Link to comment
Share on other sites

Ja tev vienā failā definēts $i = 4, bet tu savā failā (kurā inklūdo to pirmo failu) lieto arī $i mainīgo, tad īstenībā tas būs viens un tas pats mainīgais. Īsāk sakot bardaks ar vienādi nosauktajiem globālajiem mainīgajiem. Ar namespace tu vinjus vari atdalīt, pasakot pie kura konkrētā $i tu vērsies. Paskālā šī problēma ir atrisināta izmantojot Unitus, C++ valodā ir implementēts namespace keywords, a PHP jāiztiek ar klasēm:

<?php
  class klase1
  {
    static $i;
    function abc() { return 'esmu klase1::abc'; }
  }
  class klase2
  {
    static $i;
    function abc() { return 'esmu klase2::abc'; }
  }

  // tagad var lietot tos abus $i kā dažādus mainīgos
  klase1::$i = 1;
  klase2::$i = 2; 
  echo klase1::$i; // izdrukās 1
  echo klase2::$i; // izdrukās 2

  // funkcijas tāpatās
  echo klase1::abc();
  echo klase2::abc();
?>

Edited by bubu
Link to comment
Share on other sites

OK, par namespacēm sapratu, bet tagad atgriežoties mazliet atpakaļ:

 

<?php
 $page = new html('mans title');

 $table = new table('caption');
 $table->addRow('aa', 'bb', 'cc');
 $table->addRow('aa'...);

 $page->display();  
?>

 

Es nesaprotu, kā es varēšu panākt, ka tā tabula aiztaisīsies? Es nesparotu, kā var izveidot tabulu un pēc tam viņai sabāzt iekšā tos rowus.

Link to comment
Share on other sites

×
×
  • Create New...