快速入门PHP(环境、debug、开发)

前言

作为一名Android工程师,有时候也要接触一下传说中世界上最好的语言,11月中旬老板说想做一个网站,就接触了php这门最好的语言,而且要快速开发,到12月初网页功能基本已经完成,所以记录一下,说不定以后有用呢,以前都没有记录的习惯,比如才入职的时候编译的PJSIP,现在要编译又得看看去了,所以好记性不如烂笔头。

入门(开发环境与debug环境)

以安装环境入门吧,PHPStorm + Wampserver 快速搭建php开发环境,其中需要注意的是我们安装好这个之后需要适当的配一下参数,首先MySQL的用户名和密码初始化情况下是root无密码,需要改一下密码,这个有工具,只需要打开Wampserver 的phpmyadmin可视化网页,按着步骤编辑mysql的相关信息就可以了,当然可以选择CMD用质量做这个事,其次我们要配一下Apache配置文件,点击Wampserver 运行后右下角的图标,选中apache编辑httpd.conf,配置工程目录:(D:/phpStudy是我本地的工程目录,中间的参数就是权限之类的,先不理会)

DocumentRoot "D:/phpStudy"
<Directory "D:/phpStudy">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Allow from all
</Directory>

还得改一下:http-vhost.conf文件(63342是我的端口):

<VirtualHost *:63342>
    ServerName localhost
    DocumentRoot D:/phpStudy
    <Directory  "D:/phpStudy">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

改完Apache配置之后,应该配一下phpStorm的php环境了,开发中我们离不开debug呀,那我们就把debug环境也配好。

运行环境

打开PHPStorm,有可能需要key,我们可以企业认证,这个为了不引起侵权,那就不写这个了,百度一下就好了。
打开了phpstorm之后,点击File->Setting->Languages&Frameworks->PHP,如图配置好PHP环境,
这里写图片描述

PHP可执行程序如果你安装wamp没更改应该是在C:\wamp64\bin\php\php7.0.10\php.exe(版本不同略有差异)

这时候编辑Run/Debug Configurations就可以跑PHP程序了,如图:
这里写图片描述

Debug环境

打开了phpstorm之后,点击File->Setting->Languages&Frameworks->PHP,如图配置好PHP环境:
这里写图片描述

然后去配一下php.ini文件,这个文件的入口在电脑右下角单击Wampserver图标:
这里写图片描述

然后文件最后添加上:

; XDEBUG Extension
[xdebug]
zend_extension ="C:/wamp64/bin/php/php7.0.10/zend_ext/php_xdebug-2.4.1-7.0-vc14-x86_64.dll"
xdebug.remote_enable =On
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_mode = req
xdebug.remote_port = 9000
xdebug.idekey=PHPSTORM

结合自己的环境,寻找php_xdebug-2.4.1-7.0-vc14-x86_64.dll文件位置,大概位置应该和我一样,现在配置debug的Configurations:

这里写图片描述

现在可以跑debug模式了,入门完毕。

开发

我们要写一个商城软件,那么要快速开发,最好是找一个可二次开发的源码进行分析,然后结合自己的情况来二次开发,这一部门其实就是看源码比较难一些,加上以前没写过html和JavaScript,在页面布置上花一些时间,这里就不一一说了,举部分代码来看看php的基础开发吧,这个框架叫Tinyshop类似于ThinkPHP框架,但我觉得比ThinkPHP更容易上手,非常不错,大家有需要可以研究一下。

在controllers里面处理业务逻辑

我写了一个商品详情页业务处理:

    public function goodsitems()
    {
        // 1,读取产品id号
        $id = Filter::int(Req::args('id'));

        // 2,通过Id查询所有商品信息
        $goods = $this->model->table("goods as go")->fields("go.*")->where("go.id=$id")->find();

        //3,规格列表,查询类似于LINQ语法,很简单。
        $products = $this->model->table("products as pd")->fields("pd.*")->where("goods_id = $id")->findAll();
        // ....省略代码
        // 传递参数到页面
        $this->assign("products",$products);
        // 重定向到哪个页面
        $this->assign("url","/index/gooditems");
        // 跳转
        $this->redirect();
    }

页面放在themes目录或protected/view

如果themes目录里有相关html优先读取,如果没有回读取protected/view相关的html页面,看源码我们可以知道这样安排的原理,目前我还没来得及看,如果后期有时间这一块要看一看。下面贴一个html页面:

{if:$cart}
<div class="cartMain_hd font list-xx">
    <ul class="container order_lists cartTop" >
            <li class="font col-md-4" style="text-align: center;"><small>商品信息</small></li>
            <li class="font col-md-2" style="text-align: left;"><small>商品参数</small></li>
            <li class="font col-md-1" style="text-align: center; margin-left: 10px;"><small>数量</small></li>
            <li class="font col-md-1" style="text-align: right;"><small>金额</small></li>
            <li class="font col-md-2" style="text-align:center; margin-left: 30px;"><small>优惠</small></li>
            <li class="font col-md-1" style="margin-left: 10px; text-align: left;"><small>操作</small></li>
    </ul>
</div>

<div class="container">
    {set:$total=0.00;$trNum=0;$count=0}
    {list:items=$cart}
    {set:$total+=$item['amount'];}
    {set:$prom=$item['prom']}
    {set:$id=$item['id'];}
    {set:$count += $item['num'];}
    {set:$num=$item['num'];}
    {query:name=products as pd join=left join goods as gd on pd.goods_id eq gd.id fields=*,gd.id as id,pd.id as pdid,gd.name as name,gd.name as name where=pd.id}
    <div class="cartBox mar20" >
        <div class="mar20">
            <div class="order_content row">
                <div class="order_lists">
                    <div class="col-md-2 col-xs-3 col-sm-2" style="margin-left: 10px; text-align: center;">
                        <a href="javascript:;"><img src="{echo:Common::thumb($item['img']);}" style="width:80px; height:80px;" alt=""></a>
                    </div>
                    <div class="col-md-2 col-xs-6 col-sm-4">
                        {set:$gdid=$item['id'];}
                        <div class="font-b"><a href="{url:/index/goodsitems/id/$gdid}"><h5 class="font-b">{echo:TString::msubstr($item['name'],0,36)}</h5></a>
                            <p><small>{echo:TString::msubstr($item['seo_keywords'],0,15)}</small></p></div>
                    </div>
                    <div class="col-md-2 col-xs-6 col-sm-5">
                        <h6 class="font">
                            <p>套餐类型:{$item['goods_package_type']}</p>
                            <p>出游人群:{$item['goods_crowd']}</p>
                            <p id="startdate">出发日期:{$item['departure_date']}</p>
                            <p id="startcity">出发城市:{$item['seo_title']}</p>
                        </h6>
                    </div>

                    <div class="col-md-1 col-xs-12 col-sm-4 list_amount ">
                        <div class="buy-num-bar amount_box">
                            <a href="javascript:;" class="btn-dec reduce">-</a>
                            <input type="text"  name="buy_num" value="{$num}"  id="{$id}" class="sum">
                            <a href="javascript:;" class="btn-add plus">+</a>
                        </div>
                    </div>

                    <div class="col-md-1 col-xs-3 col-sm-4 list_sum">
                        <p class="sum_price">¥{$item['sell_price']}</p>
                    </div>

                    <div class="col-md-1 col-xs-3 col-sm-4 list_sum">
                        <p  class="sum_price" id="prom{$id}">{if:$prom} {$prom} {else:} 暂无优惠 {/if}</p>
                    </div>

                    <div class="col-md-1 col-xs-12 col-sm-4">
                        <div class="del font" style="margin-top:7px;margin-left: 20px;">
                            <a href="javascript:;" class="font delBtn" id="del{$id}"><small>移除</small></a></div>
                    </div>
                </div>

            </div>
        </div>
    </div>
    {/query}

    {set:$trNum++;}
    {/list}

</div>

在html里面可以嵌入sql查询,也可以插入if语句,这个我之前都没接触过,觉得很高端,相当于Android的xml里面也可以写写if语句做相关的显示隐藏吧,然而Android好像不会这样。

{if:条件} … 执行体… {else:}…执行体… {/if}
这是if语句

{set:新变量名=旧变量}
这是赋值语句,与之后的变量可以在sql中使用,也可以显示使用。

{query:查询语句}
…显示语句…
{/query}
这是循环语句,当然query可以替换为list,效果一样。

最后

第一次接触php,而且工期赶得及,看几天就写代码,可能有不对的地方,希望批评指导,[email protected].

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章