`
844604778
  • 浏览: 551228 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多


本期格言

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
  $web_title="另外一个标题";
  function output_title()
   {
     echo "第三个标题";
    }
?>
<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯
 //以下为显示网站标题的三种简单写法,第三种为常用写法,一般很少在php页面中直接写上echo,原因是这么写太丑,怕被人家当成小白。
    <title><?php echo "网站的标题"?> - 我的网站</title>  //注意,html只会识别 第一次出现的title标记,后面两个那是白瞎了
    <title><?php echo $web_title?> - 我的网站</title>
   <title><?php output_title()?> - 我的网站</title>
    </head>
    <body>  
    //BB
    </body>
    </html>

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

二、加载一些通用要素

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

<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯
   <title><?php output_title()?> - 我的网站</title>
   <script src="js1.js"></script>
   <script src="js2.js"></script>
   .....
   <script src="js10.js"></script>//这个很恶
    </head>
    <body>  
    //BB
    </body>
    </html>

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

<?php
  $web_title="另外一个标题";
  function output_title()
   {
     echo "第三个标题";
    }
    function load_jslink()
    {
        include("./js.htm"); //和你运行的网页同目录下要有个这样的js.htm.内容就是上述一堆script引用,"./"代表当前目录建议不要省略
    }
     function load_csslink()
    {
        include("./css.htm"); //同上
    }
?>
<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯
   <title><?php output_title()?> - 我的网站</title>
     <?php load_jslink();load_csslink(); ?> //注意代码编写的装B性
    </head>
    <body>  
    //BB
    </body>
    </html>

注意,加载外部文件时:

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

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

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

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

三、循环输出

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

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

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

以上有几个知识点:

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

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

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

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

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

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

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

<?php
  $web_title="另外一个标题";
  function output_title()
   {
     echo "第三个标题";
   }
   function output_lastnews() //获取最新新闻
   {
     $news_list=array(); //注意这句话不是必须的
     $news_list[]=array("news_id"=>1,"news_title"=>"淡淡的友情,淡淡的爱");
     $news_list[]=array("news_id"=>2,"news_title"=>"看别人相亲一定要淡定");
     $news_list[]=array("news_id"=>3,"news_title"=>"今天,我是失意的程序员");
     $news_list[]=array("news_id"=>4,"news_title"=>"每周一文:人与情感");
     $news_list[]=array("news_id"=>5,"news_title"=>"归属感-何去何从");
     $news_list[]=array("news_id"=>6,"news_title"=>"失业的程序员21即将更新");
     return $news_list;
 
   }
 
?>
<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> //用utf-8是好习惯
   <title><?php output_title()?> - 我的网站</title>
 
    </head>
    <body>  
    <?php $get_lastnews=output_lastnews()?> //注意这句话分开了 独立写了,
    <?php if($get_lastnews && is_array($get_lastnews) && count($get_lastnews)>0):?> //注意最后是冒号
//这里会发生一个效果,如果$get_lastnews没有数据或者出错,则下面的 dl区域块就消失了
     <dl>
      <dt>最新新闻</dt>
             <?php foreach($get_lastnews as $news):?> //最后是冒号
              <dd>
                <a href='/detail.php?id=<?php echo $news["news_id"] ?>'><?php echo $news["news_title"]?></a>;
                 </dd>
             <?php endforeach;?>//对应上面的foreach 注意最后是分号,endforeach连着写
     </dl>
 
     <?php endif;?> //这个对应第一个if判断,注意最后是分号。endif要连着写
    </body>
    </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文件,那么使用伪静态的页面地址就更完美了。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics