繁体   English   中英

调用没有参数的函数

[英]Call a function without its parameters

以下是用于制作可重复使用分页的功能。 如果你看到下面的代码,他们的功能

generate_pages()

这是从功能中获取参数

paged_controls()

但我想调用函数generate_pages()而不在body.php上传递任何参数。

这是调用函数时在body.php上出现的错误消息

generate_pages()

Warning: Missing argument 1 for generate_pages(), called in 
E:\admin\snippets\body.php on line 11 and defined in 
E:\admin\cores\pages.php on line 12

注意:未定义的变量:第16行的E:\\ xampp \\ htdocs \\ projects \\ hoplate \\ admin \\ cores \\ pages.php中的限制

那可能吗?

pages.php

<?php
        function page_count(){
            global $db;
            $sql = "SELECT COUNT(pages_id) FROM pages";
            $query = $db->SELECT($sql);
            $rows = $db->FETCH_ROW();
            foreach($rows as $row){
                return $row[0];
            }
        }

        function generate_pages($limit){

            /* Run actual query now to get the records from database */
                global $db;
                $sql = "SELECT * FROM pages " . $limit;
                $query = $db->SELECT($sql);
                return $rows = $db->FETCH_OBJECT();
        }

        function paged_controls($page_rows = 1){
                global $db;
            /* Call the function page_count to get the total page count */
                $row_count = page_count();
            /* We use the ceil function to round the number to whole number */
                $last = ceil($row_count / $page_rows);
            /* Make sure that the last page cannot be less then 1 */
                if($last < 1){
                    $last = 1;
                }
            /* Est. the page number variables */
                $pagenum = 1;
            /* Set the pagenum variables from URL else set it to 1*/
                if(isset($_GET["paged"])){
                    $pagenum = preg_replace('#[^0-9]#', '', $_GET["paged"]);
                }
            /* Make sure page number canoot be less then 1 */
                if($pagenum < 1){
                    $pagenum = 1;
                } else if($pagenum > $last){
                    $pagenum = $last;
                }

            /* Set the range of query to be excuted depend on our variables values set*/
                $limit = 'LIMIT '.($pagenum - 1) * $page_rows . ','. $page_rows;

                generate_pages($limit);

            $paged_controls = "";

            /* Only if theirs more then 1 page of results */
            if($last != 1){
                if($pagenum > 1){
                    $previous = $pagenum - 1;
                    $paged_controls .= '<a href="?paged='.$previous.'">Previous</a>&nbsp;';

                    /* Renders the left paged numbers */
                    for($i = $pagenum - 4; $i < $pagenum; $i++){
                        if($i > 0){
                            $paged_controls .= '<a href="?paged='.$i.'">'.$i.'</a>&nbsp;';
                        }
                    }
                }

                /* Render the current page the user is at */
                $paged_controls .= ''.$pagenum.'&nbsp;';

                /* Renders the right paged numbers */
                for($i = $pagenum + 1; $i <= $last; $i++){
                    $paged_controls .= '<a href="?paged='.$i.'">'.$i.'</a>&nbsp;';
                    if($i >= $pagenum + 4){
                        break;
                    }
                }

                if($pagenum != $last){
                    $next = $pagenum + 1;
                    $paged_controls .= '<a href="?paged='.$next.'">Next</a>&nbsp;';
                }
                return $paged_controls;
            }           
        }
    ?>

body.php

<?php 
$pages = generate_pages(); 
  foreach($pages as $page){
    echo $pages_id = $page->pages_id . "<br/>";
  }
?>

只有这样我才能看到这个工作是添加支票。

function generate_pages($limit = null){
/* Run actual query now to get the records from database */
    $gloab $db;
    $sql = "SELECT * FROM pages " . isset($limit) ? "LIMIT $limit" : "";
    $query = $db->SELECT($sql);
    return $rows = $db->FETCH_OBJECT();   
}

所以现在它可以运行两种方式之一

generate_pages();

要么:

generate_pages(10);

比较两个函数头:

function generate_pages($limit)
function paged_controls($page_rows = 1)

PHP允许您指定默认参数 ,就像C ++一样(您需要向下滚动一下才能看到该部分)。
您的paged_controls已经完成了这项工作,它是实现您想要的功能的好方法,无需编辑功能中的业务逻辑。

无论何时调用没有任何参数的函数,默认参数都会启动。

所以,如果你编辑

function generate_pages($limit)

到(例如)

function generate_pages($limit = 'LIMIT 0,18446744073709551615')

并通过generate_pages()调用该函数,PHP将自动假设$limit = 'LIMIT 0,18446744073709551615'
在这种特定情况下,调用没有参数的generate_pages将检索您选择的表中的所有条目,因为我们告诉数据库18446744073709551615开始给我们18446744073709551615个条目。
请参阅select / limit上MYSQL手册

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM