PHP と CodeIgniter に奇妙な問題があります。私のファイルのコードは次のとおりです。
このコードをスキップして、私が書いた 2 番目のコードに進んでください。役に立つかもしれない場合に備えて、これはここに残ります。
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
require_once('utils.php');
class FooterHeader {
// Esta clase nos permite definir el footer y sus correspondientes menus
var $utils;
var $controller;
var $TOPMENU_NOT_LOGGED_IN_NAMES;
var $TOPMENU_NOT_LOGGED_IN_LINKS;
var $TOPMENU_LOGGED_IN_NAMES;
var $TOPMENU_LOGGED_IN_LINKS;
var $TOPMENU_DESIGNER_NAMES;
var $TOPMENU_DESIGNER_LINKS;
// Side menu
var $SIDEMENU_NOT_LOGGED_IN_NAMES;
var $SIDEMENU_NOT_LOGGED_IN_LINKS;
var $SIDEMENU_LOGGED_IN_NAMES;
var $SIDEMENU_LOGGED_IN_LINKS;
var $SIDEMENU_DESIGNER_NAMES;
var $SIDEMENU_DESIGNER_LINKS;
// Main menu
var $MAINMENU_NOT_LOGGED_IN_NAMES;
var $MAINMENU_NOT_LOGGED_IN_LINKS;
var $MAINMENU_LOGGED_IN_NAMES;
var $MAINMENU_LOGGED_IN_LINKS;
var $MAINMENU_DESIGNER_NAMES;
var $MAINMENU_DESIGNER_LINKS;
function FooterHeader($controller) {
$this->utils = new Utils();
$this->controller = $controller;
include_once 'defineMenus.php';
configVars($this);
}
public function setDefaultHeader($situation) {
$topMenuNames = array();
$topMenulinks = array();
$MainMenuNames = array ();
$MainMenuLinks = array ();
$SideMenuLinks = array ();
$SideMenuNames = array ();
// dependiendo del estado del usuario, mostramos cosas u otras
if ($situation == NOT_LOGGED_IN) {
$topMenuNames = $this->TOPMENU_NOT_LOGGED_IN_NAMES;
$topMenuLinks = array ('users/login', 'users/register');
$MainMenuNames = $this->MAINMENU_NOT_LOGGED_IN_NAMES;
$MainMenuLinks = $this->MAINMENU_NOT_LOGGED_IN_LINKS;
$SideMenuLinks = $this->SIDEMENU_NOT_LOGGED_IN_NAMES;
$SideMenuNames = $this->SIDEMENU_NOT_LOGGED_IN_LINKS;
}
else if ($situation == LOGED_IN) {
$topMenuNames = $this->TOPMENU_LOGGED_IN_NAMES;
$topMenuLinks = $this->TOPMENU_LOGGED_IN_LINKS;
$MainMenuNames = $this->MAINMENU_LOGGED_IN_NAMES;
$MainMenuLinks = $this->MAINMENU_LOGGED_IN_LINKS;
$SideMenuLinks = $this->SIDEMENU_LOGGED_IN_NAMES;
$SideMenuNames = $this->SIDEMENU_LOGGED_IN_LINKS;
}
else if ($situation == DESIGNER) {
$topMenuNames = $this->TOPMENU_DESIGNER_NAMES;
$topMenuLinks = $this->TOPMENU_DESIGNER_LINKS;
$MainMenuNames = $this->MAINMENU_DESIGNER_NAMES;
$MainMenuLinks = $this->MAINMENU_DESIGNER_LINKS;
$SideMenuLinks = $this->SIDEMENU_DESIGNER_NAMES;
$SideMenuNames = $this->SIDEMENU_DESIGNER_LINKS;
}
var_dump ($topMenuLinks);
$this->setHeader ($topMenulinks, $topMenuNames, $MainMenuLinks, $MainMenuNames, $SideMenuLinks, $SideMenuNames);
}
public function setHeader ($topMenuLinks, $linkNames, $menus, $menusNames, $sideMenuLinks, $sideMenuNames) {
var_dump ($topMenuLinks);
$enlaces = $this->generateTopMenu ($linkNames, $topMenuLinks);
$data['enlaces'] = $enlaces;
$menus = $this->generateMenus ($menusNames, $menus);
$data['menus'] = $menus;
$sideMenus = $this->generateSideMenu ($sideMenuLinks, $sideMenuNames);
$data['sideMenus'] = $sideMenus;
$this->controller->load->helper('html');
$this->controller->load->view('static/header.php', $data);
}
[...]
}
全部読まないでください。それは必要はありません。2 つのvar_dump
呼び出しを見てください。最初のvar_dump
出力:
array (size=2)
0 => string 'users/login' (length=11)
1 => string 'users/register' (length=14)
2番目のもの:
array (size=0)
empty
変数が初期化されていない理由がわかりません。残りの変数はすべて問題ありません。
コードを簡素化しました:
<?php
class FooterHeader {
function FooterHeader($controller) {
$this->controller = $controller;
}
public function setDefaultHeader($situation) {
$topMenulinks = array();
// dependiendo del estado del usuario, mostramos cosas u otras
$topMenuLinks = array('users/login', 'users/register');
var_dump($topMenuLinks);
$this->setHeader($topMenulinks);
}
public function setHeader($topMenuLinks) {
var_dump($topMenuLinks);
}
}
?>
しかし、問題はまだ発生しています。
呼び出しを行うコードは次のとおりです。
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
require_once('utils/footerHeader.php');
require_once('utils/defineMenus.php');
class WelcomePage extends CI_Controller {
var $fh;
function WelcomePage() {
parent::__construct();
$this->fh = new footerHeader($this);
$this->load->helper('url');
}
public function index()
{
// seteamos el header (el defecto)
$this->fh->setDefaultHeader(NOT_LOGGED_IN);
$this->load->view('subirDisenyoEjemplo.php');
//$this->fh->setFooter();
}
}
/* End of file welcomePage.php */
/* Location: ./application/controllers/welcomePage.php */
?>