Portál AbcLinuxu, 29. října 2025 02:47
class foo {
function show{
$to = '<span>'.time().'</span>';
return $to;
}
}
ale potřeboval bych to mít napsané nějak takto
class foo {
function show{
<span><?php echo time(); ?></span>
return ?????;
}
}
Ale nevím jak to vrátit returnem nebo prostě jak to vrátit jinak. Poradí někdo? Děkuji
Řešení dotazu:
show() delat? ma tisknout nebo neco vracet nebo co?
Ten kod v tom druhem bloku je nejaky blaznivy, napis to znovu a lepe..
class foo {
function show{
<span><?php echo time(); ?></span>
return ?????;
}
}
$foo = new foo();
echo $foo->show();// vypsat to potrebuji až tady..
function show1(){
return '<span>'. time(). '</span>';
}
OR //náročnějí
function show2(){
$pomstr = '<span>'. time(). '</span>';
return $pomstr;
}
OR //náročnějí
function show3(){
$pomstr = '<span>';
$pomstr .= time();
$pomstr .= '</span>';
return $pomstr;
}
PS: Nemyslím to zle (ba naopak), ale asi by to chtělo položit dotaz „jaká je nejlepší kniha o PHP a objektovém programování“.
<?php … ?>). Předpokládám, že tam nemá být obyčejný <span>, ale nějaký delší kód, kde mohou být uvozovky, apostrofy atd., a tazatel se chce vyhnout složitému uvozování a spojování.
Myslím, že PHP něco takového neumožňuje, a je to obecně problém jazyků, které míchají šablonu s programovým kódem. Podle mne by nejčistší řešení v případě, kdy chcete šablonu a kód míchat, bylo nevracet ten text jako výstup z metody, ale rovnou jej vypsat na výstup. Pak snad můžete použít konstrukci
<?php
class foo {
function show{
?>
<span><?php echo time(); ?></span>
<?php
return ?????;
}
}
?>
Vracet ten text jako návratovou hodnotu funkce je divné, stejně to předpokládám budete chtít vypsat do výstupu. Ale jak už jsem psal, když máte jako základ špinavost typu míchání šablony a kódu, těžko pak hledat nějaké čisté řešení.
ob_xxxx jsou standardní funkce běžně používané na zachycení výstupu.
$str = <<<MY_UNIQUE_DELIMITER <span> Dlouhy kod obsahující "'$ a další blbosti, ale samozřejmně znaky " do html takto jsou špatně, pokud tedy nejsou tam kde mají být. </span> MY_UNIQUE_DELIMITER;
$ musí být \$;
show(). Je to tak?
Pak bych to udelal takhle:
$myTime = time();
class foo
{
public function show($time)
{
return '<span>'.$time.'</span>';
}
}
$foo = new foo();
echo $foo->show($myTime);
class Foo {
private $myTime;
public function __construct() {
$this->myTime=time();
}
public function __toString($time) {
return '<span>'.$this->myTime.'</span>';
}
}
$foo = new Foo();
echo $foo;
$myTime = time();
class Foo {
private $myTime;
public function __construct() {
$this->myTime = time();
}
public function __toString($time) {
return '<span>'.$this->myTime.'</span>';
}
}
$foo = new Foo($myTime);
echo $foo;
<?php
function eval_code($s)
{
ob_start();
eval("?>" . $s . "<?php ");
$t = ob_get_contents();
ob_end_clean();
return $t;
}
function show()
{
return eval_code("<span><?php echo time(); ?></span>");
}
echo show();
Je ale otázne, ako veľmi to je (ne)bezpečné a určite je rozumnejšie riešenie použiť nejaký šablónovací systém.
class foo {
function show() {
return "" . time() . "";
}
}
<?php
class foo {
function show{
ob_start();
?>
<span><?php echo time(); ?></span>
<?php
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}
}
?>
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.