Jump to content
php.lv forumi

OOp, tabulas un formas


Recommended Posts

Esmu php sameeraa neilgu laiku. Pārlūkojot php dokumentācijas un lasot kaut kādas blēņas internetā, īpaši daudz neatradu par objektu izmantošu. Tā kā esmu Borland C++Builder un Delfi stagnāts, tad man interesē tomēr kāda ir Jūsu attieksme ismantojot PHP oop? Cik sapratu tad nekādas mantošanas te nav iespējams un vēl dažas pierastas lietas, kas ir "parastajās" valodās?

Es nedaudz ķepājos iepriekš ar Perlu un tur bija jauka klase CGI, kuru es mēģināju (protams ne pilnībā) implementēt iekš saviem php darbiņiem

Te ir to piemērs.

Tad nu jautājums diskusijai - vai būtu ērti izmantot šādu vai līdzīgi klasi, vai tomēr pieturēties pie parastā procedurālā pieraksta?

 

Man jau nu pašiem liekas, ka vismaz kods paliek stipri pārskatāmāks... bet var bau būt, ka tās ir ikai iedomas.

 

class RaTable {
 function begin($param = "") {
echo "<table cellspacing='0' cellpadding='0' $param>\n";
 }
 function end() {
echo "</table>\n";
 }
 function td($text, $param = "") {
echo "<td $param>$text</td>\n";
 }
 function td_blank($param = "") {
echo "<td $param> </td>\n";
 }
 function td_begin($param = "") {
echo "<td $param>";
 }
 function td_end() {
echo "</td>\n";
 }
 function tr() {
echo "<tr>\n";
 }
 function tr_end() {
echo "</tr>\n";
 }
}  //end class table
class RaForm {
 function begin($action = "", $param="") {
echo "<form method='post' action='$action' $param>\n";
 }
 function end() {
echo "</form>\n";
 }
 function input_text($name, $value, $param="") {
echo "<input type='text' name='$name' value='$value', $param>\n";
 }
 function input_memo($name, $value, $param="") {
echo "<textarea name='$name'  $param>$value</textarea>\n";
 }
 function submit($name, $value, $param="") {
echo "<input type='submit' name='$name' value='$value' $param>\n";
 }
 function hidden($name, $value) {
echo "<input type='hidden' name='$name' value='$value'>\n";
 }
 function select($name, $param="") {
echo "<select name='$name' $param>\n";
 }
 function option($name, $value, $param="") {
echo "<option value='$value' $param>$name</option>\n";
 }
 function select_end() {
echo "</select>\n";
 }

 function calendar() {
echo "<iframe
		width=199 height=178
		name='gToday:normal:agenda.js'
		id='gToday:normal:agenda.js'
		src='WeekPicker/ipopeng.htm'
		scrolling='no'
		frameborder='0'
		style='
		  visibility:visible;
		  z-index:999;
		  position:absolute;
		  top:-500px;
		  left:-500px;
		'
	  ></iframe>\n";
 }

 function do_calendar($pform, $pfield) {
echo "<a href='java script:void(0)'  class='calendar'
	onclick='
			  if (self.gfPop)
				gfPop.fPopCalendar(document.$pform.$pfield);
			  return false;
			'
	HIDEFOCUS>
  <img name='popcal' align='absmiddle' src='WeekPicker/calbtn.gif' border='0' alt=''>
  </a>\n";
 }
}

//izmantošana

$table = new RaTable();
$form = new RaForm();

$table->begin("width='100%'");
 $table->tr();
$table->td_blank("width='20'");
$table->td("Datums","width='85'");
$table->td("width='100'");

   $form->begin("cits.php","name='test_form'");
	 $form->hidden("id",$id);
	 $form->input_text("input_name","default");
	 $form->submit("submit","Pievienot");

   $form->end();

  $table->td_end();
$table->td_blank();
 $table->tr_end();
$table->end();

Link to post
Share on other sites

mantošana class A extends B { ... }

table tagam f-ju gan nevajag rakstīt - liekvārdība un pašam garāk jālasa. labāk izmantot php kā templeitu valodu un templatē ar ierakstīt table tagu ar roku.

 

ja meklē guidlines kā taisīt var pastīties kādus frameworkus, pārsvarā pēc līdzības ar javu vai ror tie tasīti - piemēram tas pats cakephp.

Edited by v3rb0
Link to post
Share on other sites

Konkrēts piemērs (Ra*) nerulz... PHP to nodrošina defaultā (jo ir templeitu valoda)

 

 

Es piemēram OOP izmantoju priekš DB tabulām (iespaidojos no Axapta X++)

 

class ItemsTable extends BaseTable // BaseTable rūpējas par query izpildi un erroriem
{
function initFromPost($_post)
{
}

function insert/delete/update()
...
}

 

tādejādi es daru tā:

$t = new ItemsTable($params['id']);
$t->initrFromPost($_POST);
$t->update();

 

nevis:

// garš penteris te
if (...)
  $sql = "insert .. ";  // garš penteris te
else
  $sql = "update .."; // garš penteris te
// garš penteris te

Edited by Delfins
Link to post
Share on other sites
×
×
  • Create New...