[开心学php100天]第六天:用php玩转页面(基础篇)

来源:互联网 发布:java swing 界面美化 编辑:程序博客网 时间:2024/05/29 18:12

本期格言

1、做自己最擅长的事情。因为擅长带给你高效和快感。

2、写代码要学会装B。不要老老实实的敲每一个字符串输出和函数。我们要让接手我们代码的学弟学妹们崇拜的追问我们”哥,这个函数和方法在哪定义的啊。小弟(小妹)我找不到啊,求指导“

本期扯淡

1、 我可以很武断的说:凡是做自己不擅长的事一定无法事半功倍。
有时坚持和成功不能成为因果关系。譬如我不适合做歌唱家因为五音不全,在这种情况下我哪怕从现在开始不吃不喝不睡不拉不泡妞不玩dota,天天练嗓子,练100年也不见得有什么成就。同理我无法成为偶像明星,因为我长得不好看,整容的话—-没钱。

2、兴趣!=擅长。人往往无法轻易发现自己的擅长点。要注意的是你的兴趣爱好不一定是你最擅长的地方。譬如我以前对写代码很感兴趣,但是我最擅长的是做项目运营和团队管理。同理,譬如我对苍老师很感兴趣,但是我不见得很擅长去拍岛国电影。

兴趣可以杜撰,但是擅长点需要自己来挖掘。人生经历和挫折是最好的催化剂。当你真正发现自己的擅长点时,那么你的精华人生就要开始了。

我听到一句话,把它改装了,如下:学生时代–游戏人生 ;刚踏入社会–放荡人生;有了家庭–压力人生;人到中年–精华人生;老年—感悟人生;临死前—蛋疼却又舍不得的结局

3、回到php。它最擅长的搞web。说白话点就是做web页面,php并不特别擅长做复杂的oops架构,虽然这些php并不输给其他语言太多。但是说起纯实现一个单web页面,那么几乎php就是最”不羁的放荡者”。

4、如果你用过vb5或者vb6.你一定会发现vb6快速构建一个windows应用单界面程序非常快,而且那个年代拖拉控件没人会说你是“小白”,因为高手也干这个事情。只不过到了web横行的年代,拖拉控件变成了”小白“的代名词。事实上,我个人感觉如果觉得拖拉控件一定是小白,那么肯定

1、你不了解这个行业

2、你不知道软件在我国的生存环境

3、你肯定生活过的不如意。

自从玩了php,我已经习惯任何细节都手输代码了。不过我以前一直有个梦想,梦到微软把php收了,然后做一个不错的IDE出来,虽然我知道这比苍老师来我家做客还要难。

正文部分

一、在页面上显示基本的字符

php 在页面上显示一些字符实在太简单了,前面几章讲过echo 这个函数,我们来试一下吧。

 

[php] view plaincopy
  1. <?php  
  2.   $web_title="另外一个标题";  
  3.   function output_title()  
  4.    {  
  5.      echo "第三个标题";  
  6.     }  
  7. ?>  
  8. <html>  
  9. <head>  
  10.      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯  
  11.  //以下为显示网站标题的三种简单写法,第三种为常用写法,一般很少在php页面中直接写上echo,原因是这么写太丑,怕被人家当成小白。  
  12.     <title><?php echo "网站的标题"?> - 我的网站</title>  //注意,html只会识别 第一次出现的title标记,后面两个那是白瞎了  
  13.     <title><?php echo $web_title?> - 我的网站</title>  
  14.    <title><?php output_title()?> - 我的网站</title>  
  15.     </head>  
  16.     <body>    
  17.     //BB  
  18.     </body>  
  19.     </html>  

一般来说,网站的标题都是可变自定义的,所以需要用函数来做自定义处理。

 

二、加载一些通用要素

一般网站中总是要加载一些脚本和样式单,假如我们做一个页面就手写很多css和脚本引用,那实在太让人心寒了。如:

[php] view plaincopy
  1. <html>  
  2. <head>  
  3.      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯  
  4.    <title><?php output_title()?> - 我的网站</title>  
  5.    <script src="js1.js"></script>  
  6.    <script src="js2.js"></script>  
  7.    .....  
  8.    <script src="js10.js"></script>//这个很恶  
  9.     </head>  
  10.     <body>    
  11.     //BB  
  12.     </body>  
  13.     </html>  

所以,一般要把这些公用的元素放在一个公用文件中

[php] view plaincopy
  1. <?php  
  2.   $web_title="另外一个标题";  
  3.   function output_title()  
  4.    {  
  5.      echo "第三个标题";  
  6.     }  
  7.     function load_jslink()  
  8.     {  
  9.         include("./js.htm"); //和你运行的网页同目录下要有个这样的js.htm.内容就是上述一堆script引用,"./"代表当前目录建议不要省略  
  10.     }  
  11.      function load_csslink()  
  12.     {  
  13.         include("./css.htm"); //同上  
  14.     }  
  15. ?>  
  16. <html>  
  17. <head>  
  18.      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯  
  19.    <title><?php output_title()?> - 我的网站</title>  
  20.      <?php load_jslink();load_csslink(); ?> //注意代码编写的装B性  
  21.     </head>  
  22.     <body>    
  23.     //BB  
  24.     </body>  
  25.     </html>  

注意,加载外部文件时:

1、如果是静态文件,那么要用include

2、如果是函数或者php处理函数,用require.

不要随便使用include_once或者require_once,会造成一定程度的性能下降并会让你的程序结构更乱。

其实php中include等函数还能加载网络或者在web目录以外的文件,不过不建议大家使用这个特性,学都不用学,商业项目中根本不会用到。什么?你在用?那说明你的部门经理是早期的”猪刚烈“,正在催着你随便搞定问题后,收了钱拍屁股走人。

三、循环输出

在php中,可以在页面任意位置循环输出你想要的东西、譬如

由于我们还没学到数据库,所以我们手工构建一个数据源。其实我们后面学到数据库后取出的来数据也是这种$news_list

[php] view plaincopy
  1. <?php  
  2.   $web_title="另外一个标题";  
  3.   function output_title()  
  4.    {  
  5.      echo "第三个标题";  
  6.    }  
  7.    function output_lastnews() //获取最新新闻  因为我们还没学到数据库的操作,所以先用数组来代替  
  8.    {  
  9.      $news_list=array(); //注意这句话不是必须的  
  10.      $news_list[]=array("news_id"=>1,"news_title"=>"淡淡的友情,淡淡的爱");  
  11.      $news_list[]=array("news_id"=>2,"news_title"=>"看别人相亲一定要淡定");  
  12.      $news_list[]=array("news_id"=>3,"news_title"=>"今天,我是失意的程序员");  
  13.      $news_list[]=array("news_id"=>4,"news_title"=>"每周一文:人与情感");  
  14.      $news_list[]=array("news_id"=>5,"news_title"=>"归属感-何去何从");  
  15.      $news_list[]=array("news_id"=>6,"news_title"=>"失业的程序员22即将更新");  
  16.      return $news_list;  
  17. //以上我手工构建了 6条新闻  
  18.    
  19.    }  
  20.    
  21. ?>  
  22. <html>  
  23. <head>  
  24.      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯  
  25.    <title><?php output_title()?> - 我的网站</title>  
  26.    
  27.     </head>  
  28.     <body>    
  29.      <dl>  
  30.       <dt>最新新闻</dt>  
  31.       <?php  
  32.         $get_lastnews=output_lastnews();  
  33.         if($get_lastnews && is_array($get_lastnews) && count($get_lastnews)>0)  
  34. //这是一个神一样的判断,因为php是弱类型,复杂的情况下你根本不知道它会返回什么,有做判断的习惯很好很清凉  
  35.         {  
  36.             foreach($get_lastnews as $news// 开始循环新闻。 记住循环只需用foreach便可  
  37.             {  
  38.                 echo "<dd>";  
  39.                 echo "<a href='/detail.php?id=".$news["news_id"]."'>".$news["news_title"]."</a>"//拼接一个基本的新闻链接  
  40.                 echo "</dd>";  
  41.             }  
  42.         }  
  43.       ?>  
  44.    
  45.      </dl>  
  46.     </body>  
  47.     </html>  

以上有几个知识点:

1、一般正式项目中,数据库取数据出来的形式 就是这种数组格式。循环很简单

2、不要吝啬你的判断,但并不是每做一步就判断一次。尤其是数据新鲜出炉时最好判断一下。

像is_array 和count这样的函数是要背的(求背,基本函数学习的最好办法是当做 英语单词那样先背下来)

3、请大家关注 dl dt dd 这种标记。在网页设计中,dl 和ul 一般搭配使用用于展现列表形式的内容,div 一般是做外层容器的。p、span等是做修饰文字区域,单个独立显示区域块一般也使用div 。

个人很喜欢em 这个标记,干净利落,推荐一下。

 循环的另一种模式:(常用)

大家会看到上述循环输出的方式假如html标记很多很多,那么要写的代码实在太多了。于是我们再改一下模式:

[php] view plaincopy
  1. <?php  
  2.   $web_title="另外一个标题";  
  3.   function output_title()  
  4.    {  
  5.      echo "第三个标题";  
  6.    }  
  7.    function output_lastnews() //获取最新新闻  
  8.    {  
  9.      $news_list=array(); //注意这句话不是必须的  
  10.      $news_list[]=array("news_id"=>1,"news_title"=>"淡淡的友情,淡淡的爱");  
  11.      $news_list[]=array("news_id"=>2,"news_title"=>"看别人相亲一定要淡定");  
  12.      $news_list[]=array("news_id"=>3,"news_title"=>"今天,我是失意的程序员");  
  13.      $news_list[]=array("news_id"=>4,"news_title"=>"每周一文:人与情感");  
  14.      $news_list[]=array("news_id"=>5,"news_title"=>"归属感-何去何从");  
  15.      $news_list[]=array("news_id"=>6,"news_title"=>"失业的程序员21即将更新");  
  16.      return $news_list;  
  17.    
  18.    }  
  19.    
  20. ?>  
  21. <html>  
  22. <head>  
  23.      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯  
  24.    <title><?php output_title()?> - 我的网站</title>  
  25.    
  26.     </head>  
  27.     <body>    
  28.     <?php $get_lastnews=output_lastnews()?> //注意这句话分开了 独立写了,  
  29.     <?php if($get_lastnews && is_array($get_lastnews) && count($get_lastnews)>0):?> //注意最后是冒号  
  30. //这里会发生一个效果,如果$get_lastnews没有数据或者出错,则下面的 dl区域块就消失了  
  31.      <dl>  
  32.       <dt>最新新闻</dt>  
  33.              <?php foreach($get_lastnews as $news):?> //最后是冒号  
  34.               <dd>  
  35.                 <a href='/detail.php?id=<?php echo $news["news_id"] ?>'><?php echo $news["news_title"]?></a>;  
  36.                  </dd>  
  37.              <?php endforeach;?>//对应上面的foreach 注意最后是分号,endforeach连着写  
  38.      </dl>  
  39.    
  40.      <?php endif;?> //这个对应第一个if判断,注意最后是分号。endif要连着写  
  41.     </body>  
  42.     </html>  


这种展现形式出来后,大家会发现 有点像cms自定义模板的形式了。

 

是的,php的特性导致他本身就是一个模板解析引擎。在实际项目开发中,根本无需使用第三方的模板解析引擎,如smarty等等,虽然是很优秀的框架,但是做软件买卖中可以使用,如果自己运营的网站或者项目那最好不要使用。因为有熟悉smarty的时间和功夫 不如把php用的熟一点,一样你能用最原始的办法设计出好的页面架构。

 

四、附加教程

教大家一个最简单的商业项目的页面架构。

 

http://localhost/index.php?action=newslist

 

1、<?php require(…这里要加载公用的函数库..)?>2、<?php include(“top.php”) ?>  //专门建立一个top.php 用于解析网站头部文件 

什么叫头部?

就是<html>

<head>……</head> 这里的内容。这里会处理一下公用的元素和自定义显示标题或者加载不同的脚本

 3、这里应该加载要显示的内容模板。 

譬如我建立一个 newslist.php 文件(注意:这个文件内容不包含head、body标记,直接是赤裸裸的业务内容展示),大概代码如下:

<body>

<div id=”out”> //最外层的一个div 用于控制页面基本宽度和样式

<?php include($_GET[“action”].”php”) ?> //这里就可以根据不同的参数来加载不同的页面

当然实际运行时你要做一些判断,譬如文件是否存在等等

</div>

//newslist.php 应该直接就是<ul> 或者<div>或者<dl>标记来展现业务数据

//当然在newslist.php 中还能继续require 其他自定义的函数

4、<?php include(“bottom.php”)?> //专门建立一个bottom.php用来 解析网站尾部文件 

注意这个文件要包含 </body>标记哦

 

 

 

于是任何一个页面访问模式都是 index.php?action=XXXXX

于是你的网站已经初步具备插件模式的样子了。(只是初步,实际当然要复杂的很多很多很多很多)

假如你会使用301重定向或者使用apache的.htaccess文件,那么使用伪静态的页面地址就更完美了。

0 0