+ -
当前位置:首页 → 问答吧 → 三年拓荒之路(送给PHP初学者)

三年拓荒之路(送给PHP初学者)

时间:2007-08-05

来源:互联网



三年拓荒之路(谨以此篇送给刚踏入PHP的初学者)

呵呵,高手不用往下看了,因为我怕你们笑话,我水平很菜,但是刚才看到一个贴子http://www.phpchina.com/33305/viewspace_11774.html,居然说到学PHP要进培训班,所以忍不住想发几句牢骚~

我是04年下半年开始接触PHP的,之前一直在搞ASP,那会搞ASP的大多转去搞.net了,呵呵,我想可能我是一个异类,但没办法,刚跳槽,公司也刚好转变技术方向,我也跟着转了,原来烧的是微软的香,改烧Zend的香了哈~

刚接触PHP那阵,我和大多数人一样,上网查资料,翻书(借的),虽说书非借不能读,但是我借了一样读不下,看着那厚厚的一本,我心里就直打鼓,差点还产生了恐惧阴影。
网上的PHP长篇大论的一大堆,看得我头晕眼花,那会04年流行啥,OOP,论坛上就两样东西最火,一个是ASP与PHP之争(现在回过头去看,当时的PHP4真的跟ASP没啥两样,因为PHP4真正意义上并不支持OOP,直到PHP5出了之后才有改观,至于ASP,在出了PHP5后,就给甩到西班牙去了),一个就是OOP啦,全都在那吵呀争呀,我在网上逛了三四天,直正的收获不大

唉,还是得用老办法

我的老办法是什么?嘿嘿,以前学ASP时用的办法,直接下载一个最简单的留言本(越简单越好),然后看代码,一行一行的看,一个函数一个函数地查,当时那是满篇都陌生呀,除了能看懂一个if和for,其它基本上两眼一摸黑,五行代码我有四行需要找Google,还好那个留言本代码不多,也就两个文件,一个配置文件,一个页面文件,但也就是这两个最基本的文件,让我知道了PHP是怎么读取外部数据,怎么执行SQL,怎么输出。这就够了,WEB其实最基础的也就是这三样东西。

至于什么OOP,当时才入门,公司里安排下来的任务,我也就捡一些企业建站简单的来做,最多的无非就是用函数,至于OOP,那时哪像这么多呀,函数已经够我用的啦,至于什么MVC呀的模式呀,插件式的体系呀,跟我统统没关系,饭得一口一口吃,贪多嚼不烂的道理我还是懂滴~!

其实ASP转到PHP,只是工具转变了,最重要的还是个人的思维方式,也就是思路,也就是业务需求转变为设计实现的这么一个思维过程,简单的说,你会使用冒泡法和你会使用一些现成的类库是两回事,冒泡法讲的是一种思维,而现成的类库,只是运用工具,你画笔用得很帅未必代表你是一名好的画家,就这个比喻

如果你平时只是用增删除的功能,你体会不到这些,我这什么讲着讲着,又搞到解题思路这一块来了呢?因为解题思路很重要,不管ASP或是PHP,再或者是JSP之类的,他们都只是一种工具,而你的解题思路才是最关键的。

一直到06年初,跳槽,转了家公司,开始搞大项目时,我对OOP的需求姗姗来迟。

你只有觉得函数不够用了,想找一个比函数这东西更牛X的来代替时,你才知道OOP是在什么样的情况应运而生的;OOP是啥,面向对像,也就是调用类库,而什么是类呢?类就是一堆被封装起来的函数(在类里面管这叫方法,JAVA的书里是这么说的,不好意思,我学得很杂,唯一看过的书就是JAVA,但偏偏没搞过实际的项目),而成员变量,是将方法串联在一起的一种手段(当然了,也有人直接调用函数返回值的)
举个例子:判断大小
class big_or_small()//成员变量,将方法串联在一起
{
var $a;
var $b;
var $c;
  function show_big()
  {
     if ($this->a > $this -> b)
    {
       $this->c = $this->a;
    }
    else
    {
        $this->c=$this->b;
    }

    }
}
$bos = new big_or_small();
$bos->a=1;
$bos->a=2;
$bos->show_big();
echo $bos->a;
class big_or_small()//直接调用函数返回值
{

  function show_big($a,$b)
  {
     if ($a > $b)
    {
      $c=$a;
    }
    else
    {
        $c= $b;
    }
     return $c;

    }
}
$bos = new big_or_small();
echo $bos->show_big(1,2);这两种,我刚开始时,用的是后者,为啥?简单,好懂呗,可是后来我懂懂转用第一种,为啥走弓背不走弓弦呢,呵呵,刚开始我确实是因为装逼,可是后来,当你要调用$c值时,后者要执行多个show_big方法,而采取前者的话,你只需要调用一个成员变量。也有人可能觉得我罗嗦,“我可以将方法返回的值赋给某个变量呀,笨”,有人可能会这么说了,不要紧,我也只是说说而已,你可以不当一回事。

至于MVC,我是在用OOP时,开始使用MVC的,呵呵,说MVC之前,我先讲点小事。

MVC的实现,网上有人说smarty好,有人说phplib里面提供的好,还有好多好多,选哪个呢,呵呵,其实好多工具,大家在用的时候可能都会在想一个标准的问题,怎么都没有一个标准的来选?呵呵,我以前也有这样的想法,.net或是JAVA都有标准类库调用,选都不用选,而我们,为什么实现一样东西会有一堆乱七八糟的东西跳出来让我们选择?呵呵,这就是开源和商业软件的区别了,用商业软件,你是乘客,车由司机开,用开源,我们自已是司机,方向自已决定,就这个道理,而且呢,在选工具类库时,不要想太多,选最多人用的就行了,因为用的人多,到时碰上问题好问人呀,哈哈哈。

至于类库方面,更深入的时候,我开始自已写一些类库,呵呵,不过大多都是业务逻辑之类的,开始慢慢深入到类里面关于继承或是接口之类的东西。

继承是什么?我举个例子,我定义一个税票打印类print_ticket,在定义时我指定了他继承FPDF类,那么这个类就会得到FPDF所有类的成员变量与方法,并且我还可以再自定义一些成员变量与方法在里面,如打印页面距呀,税票格式呀之类的。到时直接用print_ticket类就行了,不用再管FPDF类了,如果不用继承的方法,你就得在print_ticket类的方法里面定义公用类fpdf,但是这样很烦。

记住,贪多嚼不烂~!最流行的未必最适合你

至于AJAX,呵呵,虽然红了快两年了,但是一直没碰,不过业务需要,接触了一阵子,很兴奋,而来WEB可以这样做。

至于现在红透半边天的框架,呵呵,我想是出了ZF才有这么大的动静的,看了几个引导装载的文件,没深入。

后面这两段闲话本来不想扯的,因为他的确是闲话,但是我想告诉大家,工具只是工具,解题思路才是正道,PHP招聘上的要求,都是人事经理没事干瞎折腾出来的,现实中如果只是网建项目,根本不需要这么多,会读取+执行SQL+输出就行了,再搞点增删改,呵呵,行了,不要对自已没信心,PHP入门,其实很简单,至于熟练或是精通,也就那么一回事,跟倒油翁一样的道理。

有空赶潮流,还不如自已整几个PHP扩展库来玩玩~

作者: 顺顺利利   发布时间: 2007-08-05

顶了:)

作者: sure5201314   发布时间: 2007-08-05

顶~~~~~~~~~~

作者: geniuscynic   发布时间: 2007-08-05

我总是后悔自己在前两年没有接触PHP,其实在那个时候我就看过PHP的报道,也许这就是没有把握的机会

作者: wenthuang   发布时间: 2007-08-05

学习互联网是从半年前开始的
接触PHP是一个月前
真正开始学是7月份

作者: njuptsoz   发布时间: 2007-08-05

有潜力

作者: wukeyuan   发布时间: 2007-08-05

呵呵,两年前因为看了一个傻B写的书,他说PHP是一个开源项目,技术支持和更新上比不上ASP和JSP之类的话,当时,我还是一个门外汉,所以,就听了他的话,选了ASP.
学PHP是四个月以前,现在也只会一些简单的应用,因为我做的网站只要会一些简单的应用就够用了,虽然如此,我还是在抓紧学面向对象编程.

作者: yong631   发布时间: 2007-08-06

支持LZ

作者: fengyun   发布时间: 2007-08-06

学PHP就为考个证,谁知道学校的IT认证中心只有关于PHP+MYSQL的网站开发工程师认证,没有办法呀,考吧!所以就成现在所谓的PHPer了!

作者: yiqing666   发布时间: 2007-08-07

支持下,多写写

作者: skyjhz   发布时间: 2007-08-08

现实中如果只是网建项目,根本不需要这么多,会读取+执行SQL+输出就行了,再搞点增删改
那可差远了哦.

作者: crane   发布时间: 2007-08-08

原帖由 crane 于 2007-8-8 16:12 发表
现实中如果只是网建项目,根本不需要这么多,会读取+执行SQL+输出就行了,再搞点增删改
那可差远了哦.

呵呵~再加点RSS?
接单的网建80%是企业网站,哪有这么多需求~
至于大的网建,呵呵~当然没法比啦~

作者: 顺顺利利   发布时间: 2007-08-08

不错的说

作者: softly   发布时间: 2007-08-14

看了这文章   收获好多 对自己有点信心了

作者: loong_xin   发布时间: 2007-08-15

路过 ...... 顶

作者: phpahz   发布时间: 2007-08-15

好.谢谢分享.:lol

作者: 月黑风高   发布时间: 2007-08-15

支持~

作者: laopi   发布时间: 2007-08-21

我顶你个肺!!!
楼主 说的 句句实话

作者: zfeng   发布时间: 2007-08-21

有句话说的好,适合的才是最好的
别想着别人学php你也学
关键看你学的动机是什么,有兴趣没,学了有什么用处!

作者: jiangwb1   发布时间: 2007-08-22

要支持一下!

作者: londit.cn   发布时间: 2007-08-28

路过  同感

作者: ylhp   发布时间: 2007-09-01

本来不想吱声了.看楼主也太实在了.说两句吧.网建这块真的会增删改就搞定了.可要做大项目还要深入OO啊

作者: hengzhi   发布时间: 2007-09-13

:kiss:

作者: phpBird   发布时间: 2007-09-19

真是实话呀!!!!

作者: lin_chaoqi   发布时间: 2007-09-20

看后决心顶沉你!

作者: czly   发布时间: 2007-09-26

楼主为什么不用三元运算符呢?这样子代码不是很简洁吗,另外BS你举这么简单的例子也写错误的语法(定义类是不用带括号的,C++,java,C#都没有这语法),这样对初学者产生的负面影响会很大。
class big_or_small //成员变量,将方法串联在一起
{
        var $a;
        var $b;
        function show_big() {
                return $this->a > $this->b ? $this->a : $this->b;
        }
}
$bos = new big_or_small();
$bos->a = 10;
$bos->b = 20;
echo $bos->show_big();:( :( :( :(

作者: signalon   发布时间: 2007-09-27

另外OO最基本的说法是:封装、继承、多态(虽然现在需要高内聚,低耦合的代码,组合优先继承),但你举的这例子里完全违背了封装的原则。php我也是刚开始学习,但楼主做为过来人,希望发帖时有一种严谨的态度:) :)

作者: signalon   发布时间: 2007-09-27

鼓励一下啊。
:)

作者: luzhou   发布时间: 2007-09-28

原帖由 signalon 于 2007-9-27 14:35 发表
楼主为什么不用三元运算符呢?这样子代码不是很简洁吗,另外BS你举这么简单的例子也写错误的语法(定义类是不用带括号的,C++,java,C#都没有这语法),这样对初学者产生的负面影响会很大。
class big_or_smal ...

呵呵,不好意思,献丑了
我那个也没事先咋想的,就写着写着,例子随手写写而已~
你说得很对~

作者: 顺顺利利   发布时间: 2007-09-28

原帖由 hengzhi 于 2007-9-13 15:45 发表
本来不想吱声了.看楼主也太实在了.说两句吧.网建这块真的会增删改就搞定了.可要做大项目还要深入OO啊

呵呵,是呀~
不光是大项目,还有产品开发,每一个类的调用或是变量的声明,都一定要有章有法的~

作者: 顺顺利利   发布时间: 2007-09-28