本期格言:
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文件,那么使用伪静态的页面地址就更完美了。