gpt4 book ai didi

php - CodeIgniter - 代码重复和将变量传递给函数

转载 作者:可可西里 更新时间:2023-11-01 00:51:48 26 4
gpt4 key购买 nike

我在 Controller 中有以下代码:

<?php

class Student extends CI_Controller
{

function index()
{
$data = $this->init->set();

$this->parser->parse('include/header', $data);
$this->parser->parse('student/student_index', $data);
$this->parser->parse('include/footer', $data);
}

function planner()
{
$data = $this->init->set();

$this->parser->parse('include/header', $data);
$this->parser->parse('student/student_cal', $data);
$this->parser->parse('include/footer', $data);
}

}
?>

如您所见,这里有很多重复。基本上都是。我已经将我的变量放入模型中,所以我每次只需调用模型函数,而不是将整个 $data 数组放在每个函数的开头。无论如何,我试图通过执行以下操作来减少此处的重复:

<?php

class Student extends CI_Controller
{

function index()
{
$data = $this->init->set();

$this->parser->parse('include/header', $data);

switch($this->uri->segment(2))
{
case '': $this->home($data); break;
case 'planner': $this->planner($data); break;
}
$this->parser->parse('include/footer', $data);
}

function home($data)
{
$this->parser->parse('student/student_index', $data);
}


function planner($data)
{
$this->parser->parse('student/student_cal', $data);
}

}
?>

不知何故,这对我的主页来说效果很好。它解析变量,没有任何问题。但是,在“规划器”页面上,出现错误:

Message: Missing argument 1 for Student::planner()

Message: Undefined variable: data

Message: Invalid argument supplied for foreach()

我很确定我得到了这些错误,因为该函数以某种方式没有接收到 $data 数组。我还在 CI 文档中读到 URL 中的第三段作为参数传递,在这种情况下第三段不存在,因此没有传递任何内容。但是,CI 文档没有告诉我如何将 $data 数组从 index() 函数传递到我的 planner()功能。我还想知道 为什么 home 函数可以正常工作,没有错误。

最佳答案

现在,我看不出重构的原因是它会让代码真的很难看。我不完全确定解析函数的作用,所以我改变它的方式是将参数作为字符串实际传递,但我最好将内容加载到缓冲区中并以这种方式传递。但是这里有一些更清晰且希望可读的重复删除......希望它有效:)。



class Student extends CI_Controller
{

private function load_student_page($content){
$data = $this->init->set();

$this->parser->parse('include/header', $data);
$this->parser->parse($content, $data);
$this->parser->parse('include/footer', $data);

}

function index()
{
$this->load_student_page('student/student_index');
}

function planner()
{
$this->load_student_page('student/student_cal');
}

}

关于php - CodeIgniter - 代码重复和将变量传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com