应使用分页对象的onFirstPage()和onLastPage()方法判断首尾页,它们结合分页有效性自动处理空数据、总页数为0等边界情况,比currentPage()==1或手动比较更准确可靠。

判断首尾页不用查数据库或算页码,直接用分页对象自带的方法就行——onFirstPage() 和 onLastPage() 是最准、最轻量的方式。
用对方法,避免逻辑错乱
很多人写 $page->currentPage() == 1 判断首页,看似可行,但容易在特殊场景出错:比如当前页是 1,但分页总数为 0(空数据),这时 currentPage() 仍返回 1,而 onFirstPage() 会返回 false,因为它结合了分页结构是否有效来判断。同理,onLastPage() 不只看当前页是否等于总页数,还确保总页数存在且合理。
-
首页判断:用
$page->onFirstPage(),返回布尔值,真表示当前确实在第一页且分页有效 -
尾页判断:用
$page->onLastPage(),自动处理lastPage() === 0或currentPage() > lastPage()等边界情况 - 这两个方法不依赖手动计算,也不受
toArray()或提前调用render()影响,只要分页对象没被销毁就可用
模板里直接用,别绕弯
在视图中渲染「首页」「尾页」按钮时,直接套用条件即可,不需要额外变量或 if-else 嵌套:
- 首页链接:
<a href="...?page=1" class="page-item<?php echo $page->onFirstPage() ? ' disabled' : ''; ?>">首页</a> - 尾页链接:
<a href="...?page=<?php echo $page->lastPage(); ?>" class="page-item<?php echo $page->onLastPage() ? ' disabled' : ''; ?>">尾页</a> - 注意:禁用状态要同时加
disabled类和移除href(或用#+ JS 阻止跳转),仅靠样式不够健壮
配合跳转框做联动校验
用户手动输入页码跳转时,首尾页状态也要同步更新。比如跳到页码 1 后,首页按钮应立刻变禁用;跳到最后一页,尾页按钮也应禁用。此时不能只靠前端判断,后端接收 page 参数后,必须重新生成分页对象再调用 onFirstPage()/onLastPage(),否则可能因缓存或旧实例导致状态滞后。
立即学习“PHP免费学习笔记(深入)”;
- 跳转提交前,先校验
page是否在1到$page->lastPage()范围内 - 校验通过才重查数据并生成新分页对象,再取
onFirstPage()结果用于模板 - 避免把
lastPage()当常量缓存——总数变化时,它也会变
慎用 hasPages() 替代首尾判断
hasPages() 是判断“要不要显示分页栏”,不是判断“当前是不是首页/尾页”。即使 hasPages() === true,当前页也可能不在首尾;反过来,空数据时 hasPages() === false,但 onFirstPage() 依然能安全返回 false。两者职责不同,混用会导致按钮误显或误禁。
- 显示分页栏整体:用
if ($page->hasPages()) - 控制单个按钮状态:只用
onFirstPage()和onLastPage() - 不要写成
if (!$page->hasPages() || $page->currentPage() == 1)这类组合判断,语义不清且冗余



















