[英]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> ';
/* Renders the left paged numbers */
for($i = $pagenum - 4; $i < $pagenum; $i++){
if($i > 0){
$paged_controls .= '<a href="?paged='.$i.'">'.$i.'</a> ';
}
}
}
/* Render the current page the user is at */
$paged_controls .= ''.$pagenum.' ';
/* Renders the right paged numbers */
for($i = $pagenum + 1; $i <= $last; $i++){
$paged_controls .= '<a href="?paged='.$i.'">'.$i.'</a> ';
if($i >= $pagenum + 4){
break;
}
}
if($pagenum != $last){
$next = $pagenum + 1;
$paged_controls .= '<a href="?paged='.$next.'">Next</a> ';
}
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.