快速入門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].

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