another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Как из одной функции передать значение в другую?

Код:
<?php
class Page_Portfolio extends Page_Basic
{
    function actionIndex() {
        $cms_class = cms_class::getInstance();
        $sql =  "SELECT * FROM site_portfoliotheme WHERE portfoliotheme_active='Y'";
        $menu = $cms_class->getRecords($sql, 3);
        
        $sql = "SELECT * FROM site_portfolio WHERE portfolio_active='Y' ORDER BY portfolio_id DESC";
        $viewportf = $cms_class->getRecords($sql, 150, "portfolio_image");
        
        return array("menu"=>$menu, "viewportf"=>$viewportf);
    }
    function actionHtml()
    {
        $cms_class = cms_class::getInstance();
        $sql = "SELECT * FROM site_portfolio WHERE portfolio_active='Y' AND portfolio_theme='".Router::$pageParams["html"]."'";    
	$records = $cms_class->getRecords($sql, 150, "portfolio_image");
        return array("records"=>$records, "menu"=>$menu);
        }
    }


Нужно передать из первой функции значение переменной $menu во вторую функцию, дабы там ее вернуть в массиве. Как это провернуть? Или же есть иной путь?
  • Вопрос задан
  • 7607 просмотров
Решения вопроса 2
Sander_Li
@Sander_Li
Backend developer
можно создать свойство $menu и обращаться через $this

<?php
class Page_Portfolio extends Page_Basic{

    private $menu;

    public function actionIndex() {
        $this->menu;
    }

    public function actionHtml(){
         $this->menu;
    }

}


Или, быть может, нужно что-то подобное
<?php
class Page_Portfolio extends Page_Basic{

    public function actionIndex() {

    }

    public function actionHtml(){
         $this->actionIndex();
    }

}
Ответ написан
IgorO2
@IgorO2
73
Можно использовать сессию, переменную как написал @Sander_Li , или просто вызвать ф-ию
$menu = $this->actionIndex();
$menu = $menu['menu'];
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@stasmarkin
Server side java engineer
Если ближе к ООП, то вот так, пожалуй:

<?php
<?php
class Page_Portfolio extends Page_Basic
{
    function actionIndex() {
        $sql = "SELECT * FROM site_portfolio WHERE portfolio_active='Y' ORDER BY portfolio_id DESC";
        $viewportf = cms_class::getInstance()->getRecords($sql, 150, "portfolio_image");
        return array("menu"=>$this->getMenu(), "viewportf"=>$viewportf);
    }
	
	function getMenu() {
		$cms_class = cms_class::getInstance();
		return $cms_class->getRecords($sql, 3);
	}
	
    function actionHtml()    {
        $cms_class = cms_class::getInstance();
        $sql = "SELECT * FROM site_portfolio WHERE portfolio_active='Y' AND portfolio_theme='".Router::$pageParams["html"]."'";    
		$records = $cms_class->getRecords($sql, 150, "portfolio_image");
        return array("records"=>$records, "menu"=>$this->getMenu());
        }
    }


А уж если надо оптимизировать, то можно "одним движением руки" кэшировать getMenu()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы