gpt4 book ai didi

php - 从 laravel Controller 调用私有(private)函数

转载 作者:行者123 更新时间:2023-12-03 22:58:24 24 4
gpt4 key购买 nike

我正在尝试将一些代码提取到 Controller 内的私有(private)函数中,以便对其进行整理,但该函数似乎没有运行。

路线:

Route::resource('posts', 'PostsController');

当我得到以下网址时:
/posts?page=2&posts_per_page=3&published=0

它忽略了 page 和 posts_per_page 变量(即它只返回前 10 个未发布的结果)但是当我在 index 中有这段代码时方法有效。
public function index()
{

// set defaults for page number and posts per page
$page = 1;
$postsPerPage = 10;
$published = 1;

$this->getPagesAndPostsPerPage($page, $postsPerPage);

// Get published or not
// Not published = 0
// Published = 1

if ( Input::has('published') )
{
$published = Input::get('published');
}

// return paginated results
$skip = ($page - 1) * $postsPerPage;
$posts = Post::where('published', '=', $published)
->orderBy('published_date', 'desc')
->skip($skip)
->take($postsPerPage)
->get();

return Response::json([
'data' => $this->transformCollection($posts)
], 200);
}

// Get pages and posts per page
private function getPagesAndPostsPerPage($page, $postsPerPage)
{

// if posts per page and page are defined
if ( Input::has('posts_per_page') && Input::has('page') )
{
// get inputs
$postsPerPage = Input::get('posts_per_page');
$page = Input::get('page');
}

// else if just page is defined
elseif ( Input::has('page') )
{
$page = Input::get('page');
}
}

谁能看到我做错了什么?

最佳答案

你没有从 $this->getPagesAndPostsPerPage($page, $postsPerPage); 返回任何东西

函数内部定义的变量是特定于函数的,这意味着如果您需要获取函数变量的更新值,则需要来回传递函数变量。要么,要么使用类变量(属性),以便您可以从代码中的任何位置访问更新的值。

你的 Controller :

public function index()
{
// set defaults for page number and posts per page
$page = 1;
$postsPerPage = 10;
$published = 1;

// Get the return value:
$pagesAndPostsPerPage = $this->getPagesAndPostsPerPage($page, $postsPerPage);

您的 getPagesandPostsPerPage()功能:
private function getPagesAndPostsPerPage($page, $postsPerPage){
//Grab pages and posts per page here

//Create a new array and set the values
$pagesAndPostsPerPage = array(
'page' =>$page,
'postsPerPage'=>$postsPerPage,
);
//Return the array
return $pagesAndPostsPerPage;
}

如果您需要更多解释,请告诉我!我很乐意进一步帮助你。

编辑:

忘了提一下,如果您不想使用与号 ( & ) 运算符为函数提供返回值来修改它们,也可以将变量作为对函数的引用传递。

http://php.net/manual/en/language.references.pass.php

例子:
function addOne(&$number)
{
$number++;

// Notice no return statement
}

$number = 1;

addOne($number);

echo $number; // Returns 2

关于php - 从 laravel Controller 调用私有(private)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22404334/

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