博客列表 >PHP 变量作用域、优化web1项目

PHP 变量作用域、优化web1项目

尹辉
尹辉原创
2023年04月12日 14:57:41247浏览

变量作用域

  • 局部变量:在函数体内部定义的变量,只在函数内部有效

    1. function demo()
    2. {
    3. $a = 100;
    4. $b = 200;
    5. return $a + $b;
    6. }
    7. echo demo(); // 300
    8. echo $a; //局部变量无法在函数体外被访问到
  • 全局变量:在函数体外部定义的变量

    • 全局变量在函数体内部无法直接调用(需要使用 global 关键字,或将全局变量注册到 $GLOBALS 超全局变量)
    • 注意:函数体外定义的常量,可以在函数体内部直接调用。
    1. $one = 200;
    2. $two = 300;
    3. const NATION = '中国';
    4. function test()
    5. {
    6. echo NATION; // 常量可以直接调用
    7. echo "运算的结果是" . ($one + $two); // 全局变量无法直接调用
    8. }
    9. test();
    10. // 输出:
    11. // 中国
    12. // Undefined variable: one
    13. // Undefined variable: two
    14. // 1,使用 global 关键字引入全局变量
    15. function test()
    16. {
    17. global $one, $two;
    18. echo "运算的结果是" . ($one + $two);
    19. }
    20. test(); // 运算的结果是500
    21. // 2,将全局变量注册到 $GLOBALS 超全局变量
    22. function test()
    23. {
    24. echo "运算的结果是" . ($GLOBALS['one'] + $GLOBALS['two']);
    25. }
    26. test(); // 运算的结果是500

优化web1项目

1)定义路径常量,用于简化个页面引用模板的路径

  • 定义(配置文件:common.php)

    1. // 路径分隔符
    2. const DS = DIRECTORY_SEPARATOR;
    3. // 根路径 ROOT_PATH
    4. define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT'] . DS . 'web1');
    5. // 数据路径 DATA_PATH
    6. const DATA_PATH = ROOT_PATH . DS . 'data' . DS;
    7. // 模板路径 TMPL_PATH
    8. const TMPL_PATH = ROOT_PATH . DS . 'template' . DS;
    9. // 公共模板路径 TMPL_PUBLIC_PATH
    10. const TMPL_PUBLIC_PATH = TMPL_PATH . DS . 'public' . DS;
    11. // 静态资源路径
    12. const STATIC_PATH = ROOT_PATH . DS . 'static' . DS;
    13. const STATIC_CSS_PATH = STATIC_PATH . DS . 'css' . DS;
    14. const STATIC_JS_PATH = STATIC_PATH . DS . 'js' . DS;
    15. const STATIC_IMG_PATH = STATIC_PATH . DS . 'images' . DS;
  • 各页面简化引用路径

    1. // 引入配置文件:common.php
    2. include __DIR__ . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'common.php';
    3. // 引入头部模板
    4. include TMPL_PUBLIC_PATH . 'header.php';
    5. // 引入数据文件
    6. $news = require DATA_PATH . 'news.php';
    7. $items = require DATA_PATH . 'item.php';
    8. // 引入尾部模板
    9. include TMPL_PUBLIC_PATH . 'footer.php';

2)新闻内容数据动态获取(data/news.php)

  1. // 从聚合数据获取头条新闻列表
  2. // 这里的 key 为模拟数据,实际使用时需改为自己的 key
  3. $res = file_get_contents('http://v.juhe.cn/toutiao/index?type=top&key=257hio90j65few598jhf34xs23');
  4. $data = json_decode($res, true);
  5. $dataContent = $data['result']['data'];
  6. $myData = [];
  7. foreach ($dataContent as $k => $v) {
  8. extract($v);
  9. $arr = array('id' => $k, 'title' => $title, 'url' => $url);
  10. $myData[] = $arr;
  11. }
  12. // 取前10条
  13. $output = array_slice($myData, 0, 10);
  14. return $output;

3)各页面内容由 data 数据动态生成

  • 1,首页

    1. <main>
    2. <!-- 新闻列表 -->
    3. <div class="news">
    4. <h3>新闻列表</h3>
    5. <div class="list">
    6. <?php foreach ($news as $v) : extract($v)?>
    7. <a href="<?= $url ?>"><?= $title ?></a>
    8. <?php endforeach; ?>
    9. </div>
    10. </div>
    11. <!-- 产品列表 -->
    12. <div class="items">
    13. <h3>产品列表</h3>
    14. <div class="list">
    15. <?php foreach ($items as $v) : extract($v) ?>
    16. <div class="item">
    17. <img src="<?= $img ?>" alt="<?= $title ?>" />
    18. <a href="<?= $url ?>">最新产品<?= $id ?></a>
    19. </div>
    20. <?php endforeach; ?>
    21. </div>
    22. </div>
    23. </main>
  • 2,新闻页

    1. <div class="news">
    2. <h3>新闻列表</h3>
    3. <div class="list">
    4. <?php foreach ($news as $v) : extract($v) ?>
    5. <a href="<?= $url ?>"><?= $title ?></a>
    6. <?php endforeach; ?>
    7. </div>
    8. </div>
  • 3,产品页

    1. <div class="items">
    2. <h3>产品列表</h3>
    3. <div class="list">
    4. <?php foreach ($items as $v) : extract($v) ?>
    5. <div class="item">
    6. <img src="<?= $img ?>" alt="<?= $title ?>" />
    7. <a href="<?= $url ?>"><?= mb_substr($title,0,8) ?>...</a>
    8. </div>
    9. <?php endforeach; ?>
    10. </div>
    11. </div>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议