Задать вопрос
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 во вторую функцию, дабы там ее вернуть в массиве. Как это провернуть? Или же есть иной путь?
  • Вопрос задан
  • 7724 просмотра
Подписаться 5 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽