设为首页 收藏本站
查看: 506|回复: 0

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

[复制链接]

尚未签到

发表于 2017-4-11 09:26:02 | 显示全部楼层 |阅读模式

本期格言

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-363210-1-1.html 上篇帖子: PHP 解决采集乱码问题mb_convert_encoding和iconv使用比较 下篇帖子: PHP中Session变量不能传送到下一页的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表