WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Class/Methods för DIV (https://www.wn.se/forum/showthread.php?t=1059384)

Kimppa 2013-10-08 18:50

Class/Methods för DIV
 
Hej,

Tänkte fråga experterna om hjälp.

Sitter och kliar mig i huvudet med OOP PHP och vill göra en sak som förmodligen
inte är optimal, men det är:

Citat:

<?php
$html = new Element;
$html->div_start("divnamn");

Kan jag lägga in andra klasser/methoder innanför denna HTML Class som jag enbart vill använda för att skapa dynamisk html (för ID etc)?

$html->div_end("divnamn");
?>
Jag måste ha allt väldigt organiserat när jag programmerar och det slutar ofta med att jag börjar om med ett helt projekt istället för att ordna till dålig kod.

Tacksam för all hjälp!

Kimppa 2013-10-08 19:14

Uppdaterad med lösnining
 
Jag kom fram till det jag ville efter många om och men.

Finns det fördelar med att programmera på detta sätt?
Jag försöker programmera någon variant av OOP PHP men samtidigt bygga någon typ av bas för framtida projekt så jag enkelt bara kan skriva ut diverse element, ge de namn och klasser etc etc.

Tar gärna emot synpunkter, reflektioner, mm.

Vad jag menar - Det är ju lätt när man väl har klasserna och metoderna på plats?
Men är arbetet bakom de verkligen värt det? Ni kan nog bara svara vad ni vill, har alltid så många funderingar.

Citat:

<?php

class Elements {

public $id;
public $p;

public function newDiv($id) {
echo ("<div id=\"$id\">\n");
}
public function endDiv() {
echo "</div>\n";
}

public function addParagraph($p) {
echo ("<p>$p</p>\n");
}

}

$html = new Elements;
$html->newDiv("namn");
$html->addParagraph("En paragraf.");
$html->endDiv();

?>
Printar HTML:
Citat:

<div id="namn">
<p>En paragraf.</p>
</div>
EDIT: Tog bort ID på slut-Diven men de kan ju va smart att ha en kommentar i form av <!--ID--> där så det kan läggas till igen sen.

Printar i browser:
En paragraf.

Kimppa 2013-10-08 19:31

Förlåt kan någon ta bort denna tråd. Jag skriver en ny i Offentliga forumet. För jag är mer intresserad av reflektioner och synpunkter om andra är intresserade.

Ber om ursäkt för detta.

pelmered 2013-10-08 19:37

Det du vill skapa är alltså någon form av HTML helper?
Titta lite på HTML-helpern som finns i CodeIgniter och se hur de har gjort: http://ellislab.com/codeigniter/user...ml_helper.html
Se även deras form helper: http://ellislab.com/codeigniter/user...rm_helper.html

Där kan du nog få lite inspiration.

Form helpern tycker jag är ganska användbar, men HTML helpern tycker jag inte det är så stor poäng med.

Kimppa 2013-10-08 19:49

Tack för tipsen! Ska ta en titt på de!

Har även startat ny tråd som är lite mer om synpunkter på hur man kan organisera sin kod:
http://www.wn.se/showthread.php?p=20478696

EDIT:
Ganska exakt det jag letade efter! Tackar och bockar!

hnn 2013-10-09 08:31

Jag har försökt att använda olika "helpers" genom åren, man alltid slutat med att man skriver det för hand.

CodeIgniter har kommit en bit på vägen, men har aldrig använt HTML Helpern.
Däremot som ItIsGood skriver, så är Form Helpern riktigt bra.

Man får framförallt ta tidsperspektivet i åsikt. Hur mycket tid sparar du på att skriva en klass / helper jämnfört med att skriva det för hand.

tartareandesire 2013-10-09 09:26

Jag tycker personligen att det för det mesta är en ganska dålig idé att skriva ut HTML-kod på det här viset. Det blir framför allt lätt svåröverskådligt för andra personer som inte är insatta i ditt projekt. Att använda separata template-filer är betydligt trevligare. HTML-helpers av det där slaget är för det mesta bara ett aningen snyggare sätt att skriva ut HTML-kod direkt i "vanlig" icke objektorienterad PHP-kod :)

danjel 2013-10-09 13:15

Jag brukar inte heller använda html helpers i större utsträckning.
Tips på lite schysst oo kod för detta ändamål:
http://www.sitepoint.com/the-open-closed-principle/


Alla tider är GMT +2. Klockan är nu 17:03.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson