这是我的问题 我有一个类说ABC和在其中定义的函数XYZ,该函数根据上面的逻辑返回一些东西。
class ABC {
function XYZ{
..........
.......
return "--- ";
}
}
现在这个类的另一个页面上有一个调用此方法的对象。
$z= new ABC;
if( $z->XYZ() )
{
some output
}
else{
another output
}
我的问题是我无法访问第2页。但我需要更改else语句的输出。我只能访问ABC类,因为我在模块中覆盖了它。所以,简而言之,我只能改变XYZ的功能。什么是解决方案??
如果它有任何意义,我正在研究MAGENTO ECOMMERCE平台,类是块类,第2页是模板
答案 0 :(得分:3)
答案 1 :(得分:1)
你也可以这样做:
<?php
ob_start();
// do your stuff
// ...
// here you capture all the output that it is generated by your scripts
$v = ob_get_contents();
// alter the value of $v by detecting if it should be changed. you can user regex for example to
// detect and update
// ...
// here you clean all data stored in buffer
ob_clean();
// and put the updated data in buffer
print $v;
// end of buffer operations
ob_end_flush();
?>
希望它有所帮助,
答案 2 :(得分:0)
您需要一种方法来区分PAGE1和PAGE2,如果可能的话,请通过URL说明。因此,您必须更改将检查当前哪个页面的方法,并根据它,它将更改输出,但您必须在方法本身中编写输出,而不是将其写入模板中。
class ABC {
function XYZ {
$result = $this->getResult(); //Helper method to get the result.
if ($result) {
//Do something when result is true.
} else {
$url = $this->checkUrl(); //Check URL of the page.
if ($url == PAGE2) { //If you are on PAGE2
//Do something specific for the PAGE2
} else {
//Do something for all other pages
}
}
}
}
我知道它不是完美的解决方案,但我希望它会以某种方式帮助你。
答案 3 :(得分:-1)
如果你在所有模板中使用它的方法是完全安全的,你会覆盖它,但如果它只在特定的模板中使用,你会扩展类以创建应用于它的模板的新方法。
答案 4 :(得分:-2)
必须在$_GET
或$_POST
数组(或其他查询)中的某处指定页码。检查该变量并实现替代逻辑。