PHP自定义addCSS方法引入多个CSS文件失效问题排查
问题根源
CSS不生效是两处代码写法错误导致的,和CSS文件本身的样式规则无关:
- 类方法调用错误:你在
index.php里把addCSS当成对象属性直接赋值,但addCSS是Page_Data类中定义的方法,必须带括号传参才能执行内部的拼接逻辑。错误写法下,专门用来存储CSS链接标签的$css属性始终是空字符串,页面head里自然不会输出任何CSS引入代码。 - 模板变量解析不严谨:
page.php的双引号字符串中直接书写对象属性,没有做复杂变量标记,部分PHP版本下会出现解析失败,导致变量无法替换为实际内容。
修正方案
1. 修正index.php中的CSS引入逻辑
把原本给属性赋值的两行代码,改为正确调用类方法:
错误写法
$pageData->addCSS = ('css/layout.css'); $pageData->addCSS = ('css/navigation.css');
替换为
$pageData->addCSS('css/layout.css'); $pageData->addCSS('css/navigation.css');
2. 修正page.php模板的变量书写规则
给双引号内的所有对象类型变量加上{}包裹,强制PHP正确解析变量值,修正后的完整page.php代码如下:
<?php return "<!DOCTYPE html> <html> <head> <title>{$pageData->title}</title> <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/> {$pageData->css} {$pageData->embeddedStyle} </head> <body> {$pageData->content} </body> </html>";
效果验证
修改完成后刷新页面,右键查看网页源代码,若<head>标签内正常出现两个<link rel='stylesheet' />标签,说明PHP逻辑已经正常运行。如果此时样式仍未加载,打开浏览器F12开发者工具的「网络」面板,检查CSS文件是否报404错误,根据你的项目目录结构调整CSS文件的相对路径即可。
内容的提问来源于stack exchange,提问作者Bethany Jane
相关产品推荐
相关产品推荐

