将FPDF类构造函数改为_construct后出现‘unknown page size A4’错误的技术咨询
解决FPDF构造函数过时提示与页面尺寸错误的问题
哦,我一眼就发现问题所在了!你修改构造函数的时候少写了一个下划线——PHP的魔术构造函数是__construct()(两个下划线开头),而不是你写的_construct()(单个下划线)!这就是为什么会出现“unknown page size A4”错误的核心原因。
问题根源
当你把构造函数写成_construct时,PHP根本不把它当作类的构造函数,而是会自动调用默认的空构造函数。这样一来,FPDF类初始化时完全没有接收到orientation、unit、size这些参数,自然无法识别A4页面尺寸的预设值,就抛出错误了。而之前用与类同名的FPDF()构造函数时,虽然能正常工作,但PHP已经将这种写法标记为过时,所以会弹出提示。
正确的解决步骤
修正构造函数名称
把构造函数改成PHP标准的魔术构造函数格式,重点是两个下划线:class FPDF { public function __construct($orientation='P', $unit='mm', $size='A4'){ // 把原来FPDF()构造函数里的所有初始化代码都移到这里 // 比如初始化页面方向、单位、尺寸,以及加载预设页面尺寸的逻辑 $this->orientation = $orientation; $this->unit = $unit; $this->size = $size; // 示例:处理预设页面尺寸(比如定义A4的宽高) $this->_initPageDimensions(); } }这里建议加上
public访问修饰符,符合现代PHP的编码规范。兼容旧代码(可选)
如果你的项目里还有旧代码使用new FPDF()的方式调用同名构造函数,可以保留原来的构造函数,让它调用新的__construct,同时加上过时注释:class FPDF { public function __construct($orientation='P', $unit='mm', $size='A4'){ // 初始化逻辑... } /** * @deprecated 请使用__construct()替代 */ public function FPDF($orientation='P', $unit='mm', $size='A4'){ $this->__construct($orientation, $unit, $size); } }这样既消除了PHP的过时提示,又不会破坏旧代码的功能。
升级FPDF(推荐)
如果你使用的是第三方FPDF库,建议直接升级到最新版本。新版本的FPDF已经完全适配PHP的现代构造函数规范,不会再出现这种过时提示,同时还能获得更多功能和Bug修复。
验证效果
修改完成后重新生成PDF:
- 不会再出现“与类同名的方法已过时”的提示
- 页面尺寸A4能被正确识别,不会弹出“unknown page size A4”错误
内容的提问来源于stack exchange,提问作者sokhib Abdurasulov
相关产品推荐
相关产品推荐

