Függvény típusú osztálymezők
Azt szeretném, hogy egy osztályom default függvényt tartalmazzon egy bizonyos műveletre, amit a példányok felülírhatnak.
Valami ilyesmi alapján csinálnám (ez működik):Sajnos osztályban már nem működik:Ha ez a fenti dolog működne, akkor tudnám csinálni ezt:Csak nem megint a csodálatosan rugalmas php-szintaxis korlátjába ütköztem? Any ötlet?
■ Valami ilyesmi alapján csinálnám (ez működik):
function K($x) {
return $x;
}
$k = K;
echo $k('mokus');
class Pager {
public $delinkify = strip_tags;
function link($x) {
// ...
return $this->delinkify($x);
// (igy se mukodik:)
// return ${this->delinkify}($x);
}
}
$pager = new Pager(/* ... */);
$pager->delinkify = create_function(/* ... */);
Köszöntem
szemleletmod
Udv,
Felho
Nocsak
Egy lapozó osztályt írtam egyébként, amivel sok itemes oldalak lapozóját lehet könnyen beilleszteni. Az egyik callback metódusa a delinkify, amelyik akkor fut le, ha valamelyik link a lapozón önmagára mutat (például első oldalon az "első" vagy "előző" link). Ez defaultból a strip_tags, de az egyik oldalamon másra volt szükségem (emptyFunction-ra, azazhogy ne jelenjen meg a link). (Ui. kétféle lapozó van a szájton... azt ne mondd, hogy származtassak; nem absztrakt osztálynak szántam, nem akarnék ágyúval verébre módon származtatott osztályokat írogatni ezekre, mikor egy egyszerű paraméterről van szó).
Szvsz komoly szintaxis-probléma az, hogy nem lehet meghívni egy függvény típusú változót, ha az osztálydeklarációban szerepel. Pontosan látszik rajta, hogy utólag van beleheggesztve a nyelvbe az oop. (No meg ide vezet ez a dollárosdi...) Ezzel a caller függvénnyel a dolgot orvosolták, de azért elég csúnya ez.
ellentmondás
Üdv,
Felhő
milyen ellentmondás?
Milyen mintára gondolsz, és miféle ajánlásra? Nekem nem metódust kell felülírnom, hanem változó függvényt meghívnom. A callbackek erre vannak: változó függvények. Persze, hogy külső függőség, ez min változtat most?
Akkor teheted, amit csináltál, de nem hiszem, hogy ez lenne egy korrekt OOP megoldás.
Még mindig nem értem, miért nem korrekt (és miért fontos, hogy a nagykönyves OOP) megoldás az, ha valaki callback-fv.-t akar implementálni php-ban egy osztályra. Abban talán egyetértünk, hogy a callbackezés egy korrekt valami.
Az, hogy én milyen template-feladatokra milyen skálájú megoldást választok, igencsak esetfüggő. Az én esetemben egy olyan szájtról van szó, ahol kétféle lapozó van, én ezeket általánosítottam egy osztályba, és kényelmes dolog laponként paraméterezve példányosítani, származtatás helyett. A template-rendszerek amúgy tele vannak callback-mechanizmusokkal. A drupal is, csak még sokkal körülményesebb...