ugrás a tartalomhoz

Lehet-e a function fuggvenyen belul egy ujabb function

nemalevi · 2008. Ápr. 12. (Szo), 23.48
Sziasztok!

Egy hozzaertoknek szerintem egyszeru kerdesem lenne:
Lehet-e a function fuggvenyen belul egy ujabb function?
Leirok egy peldat:

function oldal ($tartalom)
{
$tartalom
}
Masik php:

include ("oldal.php");
oldal ("Ez talalhato az oldalon");
Lehetseges-e ebbe a funkcioba egy masikat beiktatni:
pl:

<?
function picture ($sor)
    {

print "<div>$sor</div>";
}
picture ("<img src='kep1.jpg'");
picture ("<img src='kep2.jpg'");
picture ("<img src='kep3.jpg'");
 
1

Definialni vagy meghivni?

Protezis · 2008. Ápr. 13. (V), 00.23
Definialni nem lehet, meghivni termeszetesen meg lehet. Az oldal() fuggvenynek nem sok ertelmet latom. A legjobb az lenne, ha azt irnad le, mit akarsz elerni, nem azt, hogyan.

Ha pl. gyorsan - de leginkabb hiba nelkul - akarsz img taget irni, akkor ertelmesebb lenne a kovetkezo konstrukciohoz hasonlo valami:
function image($url, $alt) {
 print "<img src=\"".$url."\" alt=\"".$alt."\" />";
}
2

re

nemalevi · 2008. Ápr. 13. (V), 03.11
Az oldal fuggvenynek azert gondoltam h van ertelme, mert ha mondjuk van 4-5 oldal es mindegyiknel ugyanaz a header es a footer-ja akkor az oldalaknal nem kell bemasolgatni mindenhova ugyanazt. Bar kezdo vagyok es nem tudom ezt hogyan csinaljak a nagyok, de ez csak egy otlet volt.
Ezen belul lennenek kepek, amik videokra mutato hivatozasok, de mivel h a kerete kicsit bonyolult esert ezt is beletennem egy fuggvenybe.
Tehat az oldal fuggvenybe lennenek picture fuggvenyek valahogy igy:
oldal("picture();picture();picture();") -> Csak ez igy ebben a formaban nem mukodik.
Es most maga az a teny, hogy kep kerul bele az nem szamit. Csak az erdekelne hogy fuggvenyen belul meg lehet e hivni masik fuggvenyt, mert akarhogy varialgatom a dolgokat a picture-t nem ertelmezi fuggvenykent az oldal fuggvenyen belul.
Amit el szeretnek erni az csak az oldal/oldalak leegyszerusitese.
Ja es az oldal fuggvenyt igy nagyon leegyszerusitettem, igy talan jobban megertheto:

<?
function oldal ($tartalom)
{
?>
<html>
<head>
</head>
<body>
<div class="egesz_oldal">
<div>Ide kerul a fejlec.</div>
<div>Ide kerulnek a linkek</div>
<?= $tartalom ?>
<div>Ide kerul a lablec.</div>
</div>
</body>
</html>
<?
}
?>
3

Rossz elgondolas

Protezis · 2008. Ápr. 13. (V), 09.07
Gondolom lenne egy olyan fuggvenyed is, hogy Div(), meg Form(), meg SubmitButton(), es akkor valami ilyen fuggvenyhivasod: Oldal(Div(Form(SubmitButton()))) - ez rossz elgondolas.

Hasonlo, de mukodo megoldast csinaltam par eve OOP alapokon, de a rengeteg objektum miatt ezt inkabb le se irom, ez is rossz megkozelites.

Azt ajanlom, nezz meg egy templatezo rendszert, pl.: Smarty, pelda
4

akkor sem page

Szekeres Gergő · 2008. Ápr. 13. (V), 09.11
hanem inkább header... de ilyenkor szerintem egyszerübb, ha csak includolsz egy header illetve egy footer-t. Több megoldás is van, lényeg hogy egyértelmű legyen.

így az oldal függvénynek túl sok értelme nincs. ráadásul ha így csinálod vagy pufferelned kell a html kimenentet az összes generált tartalomnál ($tartalom változó), vagy változóba gyüjtened, ami szerintem kicsit favágó módszer.

Amúgy amit írsz az egy kicsit oop. nézz utána a php oop lehetőségeinek, egyszerű eljárásokkal nem lehet olyat elérni amit szeretnél.
5

header, footer

nemalevi · 2008. Ápr. 13. (V), 10.52
Lehet, hogy rossz elgondolas, de bejott a kovetkezo peldaban es ugy gondoltam, ha lehet akkor meg csavarok rajta.

function picture ($sor)
{
 print "<div class='doboz' style='width: 170px;'>
          <div class='dobozfelso'>
            <div class='dobozjobboldal'>
              <div class='jobbsarok'>
                <div class='dobozalso'>
                  <div class='jobbalsosarok'>
                    <div class='dobozbaloldal'>
                      <div class='balsarok'>
                        <div class='balalsosarok'>
                          <div style='padding: 15px 15px 15px 15px'>$sor</div></div></div></div></div></div></div></div></div></div><br>";
}
picture ("<img  src='kep1.jpg' class='kepek' alt='szoveg (A videó megtekintéséhez kattints ide!)' onClick = \"window.open('kep1.html','kep1','width=450,height=380,toolbar=0,status=0')\">");

picture ("<img  src='kep2.jpg' class='kepek' alt='szoveg (A videó megtekintéséhez kattints ide!)' onClick = \"window.open('kep2.html','kep2','width=450,height=380,toolbar=0,status=0')\">");

picture ("<img  src='kep3.jpg' class='kepek' alt='szoveg (A videó megtekintéséhez kattints ide!)' onClick = \"window.open('kep3.html','kep3','width=450,height=380,toolbar=0,status=0')\">");
A header, footer megoldasra mar gondoltam, es most ugy tunik ez is a legegyszerubb megoldas.
Kosz az utbaigazitast.
Amugy ez a nyakatekert div csoda meg azert van, mert nem talaltam egyszerubb megoldast a meretezheto, lekerekitett dobozra.
6

bejött?

Szekeres Gergő · 2008. Ápr. 13. (V), 11.07
Programozásban mindent meg lehet oldani. Nem is ez a művészet, hanem az, hogy elegánsan kell csinálni. Ha 2 hét múlva bele kell nyúlni a kódodba majd te is fogod majd a fejed.

Van néhány jó könyv APItervezésről, meg úgy általában programtervezésről. Hogy értsd mi nem jó:
-picture függvény mit csinál? átadja a paraméterét a print függvénynek? minek? ha így akarod csinálj egy page osztályt, készítsd hozzá picture leszármazottat, aminek van src,class stb mezője. úgy meg lehet csinálni, és annak talán több értelme is van(nem sok, de több.. :)).

-érdemes lenne használnod egy template rendszert. ha komolyan akarsz php-vel(meg úgy általában fejlesztéssel) foglalkozni, akkor nem árt ha az alapvető szabványokat betartod (MVC pl.). próbálj ki egy párat, a smarty ráadásul a CV-ben is jól mutat...


- és ne bonyolíts feleslegesen. attól nem lesz jobb egy program hogy egy paraméter 20db függvényen keresztülfut. hidd el, idővel (sajnos) bonyolultak lesznek azok maguktól is..