表现与业务逻辑分离

表现与业务逻辑分离

PHP和HTML混写很乱,怎么解决?

一个页面分成两个文件即可,一个PHP做逻辑,一个HTML做模板,这叫做“表现与业务逻辑分离”。

比如“首页”index.php分成:index.phpindex.htmlindex.php代码如下:

index.html代码如下:




    
        
        在线阅读
    
    
        

在线阅读

'; foreach ($d['articles'] as $k=>$v) { $id = $k + 1; echo '
  • ' . $v['title'] . ''; echo '

    ' . mb_substr($v['content'], 0, 100, 'UTF-8') . '……

  • '; } echo ''; } ?>

    作业:把show_article.phpstore_article.php也拆分了,写完之后对比本书提供的代码:github.com/sinkcup/phbook/tree/0.3。

    拆分之后诞生一个小问题:访问http://localhost/时,其实访问的是http://localhost/index.php还是http://localhost/index.html呢?

    答:不一定,由配置决定。回头看《搭建开发环境服务器》最后的截图,配置里面是这样的:

    DirectoryIndex index.php index.php3 index.html index.htm
    

    按照先后顺序,这个会优先使用index.php做首页,如果没有的话,再用index.html。而有的配置是这样的:

    DirectoryIndex index.html index.php
    

    这就会优先使用index.html,不符合本节的要求,需要改一下,然后重启Apache。Linux下重启的命令是:

    sudo service apache2 restart
    

    发表文章之后,页面怎么出现HTML错误甚至乱码了?

    打开store_article.php的代码看一下,只输出了“发表成功”,这不是网页。一个正常的网页需要包含DOCTYPE、head、body等内容,其中head里的charset声明了编码,浏览器才能正常显示。所以添加一个notice.html模板,然后store_article.php里包含它即可。代码如下:

    
    
    
        
            
            提示:<?=$d['notice']['msg']?>
        
        
            

    提示:

    回到首页

    总结一下

    我的技术水平

    HTML 服务器部署 PHP 数据存储 HTTP协议
    HTML标准和语义化 安装WAMP/LAMP 让内容动起来 json文件存数据 GET、POST
    charset 表现与业务分离

    作业

    • 程序员的自我修养:“HTML 4”用的是“charset”,“XHTML 1.0”用的是“encoding”,哪个表意更准确的?
    • 扩展阅读:《百万年薪的人都是怎么过日子的? - 知乎》

    待解决的问题

    • 查看get_article.php的代码,读一篇文章,却把所有文章取了出来,再取其中一篇,这样浪费性能啊,如果文章有成千上万篇,那怎么办?

      且听下回分解。

    你可能感兴趣的:(表现与业务逻辑分离)