1. 程式人生 > >快速入門PHP(環境、debug、開發)

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

相關推薦

快速入門PHP環境debug開發

前言 作為一名Android工程師,有時候也要接觸一下傳說中世界上最好的語言,11月中旬老闆說想做一個網站,就接觸了php這門最好的語言,而且要快速開發,到12月初網頁功能基本已經完成,所以記錄一下,說不定以後有用呢,以前都沒有記錄的習慣,比如才入職的時候編譯

【ASP.NET Core快速入門在CentOS上安裝.NET Core運行時部署到CentOS

ati libunwind serve code api cal 之前 prompt conn 下載.NET Core SDK 下載地址:https://www.microsoft.com/net/download/windows 第一步:Add the dotne

【ASP.NET Core快速入門十四MVC開發:UI EF + Identity實現

dfa models cti ted lec inpu word pri numeric 前言 之前我們進行了MVC的web頁面的Cookie-based認證實現,接下來的開發我們要基於之前的MvcCookieAuthSample項目做修改。 MvcCookieAuth

Spring Data MongoDB 一:入門環境搭建簡單的CRUD操作

一.簡介      Spring Data  MongoDB 專案提供與MongoDB文件資料庫的整合。Spring Data MongoDB POJO的關鍵功能區域為中心的模型與MongoDB的DBCollection輕鬆地編寫一個儲存庫互動資料訪問。 二.Spring

快速入門系列--WCF--07傳輸安全授權與審核

最大的 緩存 ims cut 常見 曾經 strong 這一 set 這部分主要涉及企業級應用的安全問題,一般來說安全框架主要提供3個典型的安全行為:認證、授權和審核。除了典型的安全問題,對於一個以消息作為通信手段的分布式應用,還需要考慮消息保護(Message Prote

快速入門系列--WCF--02消息會話與服務寄宿

abc align bsp 不同的 cpu .org 程序 伸縮 網絡 經過WCF基礎的ABC學習,已經可以構建簡單的WCF的服務,使用不同的服務地址和綁定類型,根據業務提供所需的服務契約。但不禁想問,服務所使用的消息報文是什麽樣的形式麽?蘊含什麽樣內容呢?WCF服務是否支

【ASP.NET Core快速入門準備CentOS和Nginx環境

正常 b- 進入 運行 ins 輸入 最小 我們 -128 基本軟件 VMware虛擬機 centos:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso

全新 Mac 安裝指南編程篇環境變量Shell 終端SSH 遠程連接

本地應用 pix 字符 CI sub 環境變量 c4c compare bus 註:本文專門用於指導對計算機編程與設計(尤其是互聯網產品開發與設計)感興趣的 Mac 新用戶,如何在 Mac OS X 系統上配置開發與上網環境,另有《全新 Mac 安裝指南(通用篇)》作為本安

快速複製一個虛擬環境------批量匯出批量安裝

pip freeze > request.txt; pip install -r request.txt; 終端先切換到如下地址 (huasheng_django) [email protected]:~/Desktop$ #ubuntu :是ubuntu系統 #hua

深度學習 --- 優化入門正則化引數範數懲罰L0L1L2Dropout

      前面幾節分別從不同的角度對梯度的優化進行梳理,本節將進行正則化的梳理,所謂正則化,簡單來說就是懲罰函式,在機器學習中的SVM中引入拉格朗日乘子法即引入懲罰項解決了約束問題,在稀疏自編碼器中我們引入了懲罰因子去自動調整隱層的神經元的個數,以此達到壓縮率和失

Nodejs入門基礎events事件模組事件抽獎demo

events,用於宣告事件呼叫,無需打包events1.js基本事件呼叫介紹   var events=require("events");//導events包 var eventsEmitter=new events.EventEmitter();//例項化events模組 /*d

log4j的8個日誌級別OFFFATALERRORWARNINFODEBUGTRACE ALL

log4j定義了8個級別的log(除去OFF和ALL,可以說分為6個級別),優先順序從高到低依次為:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。 ALL 最低等級的,用於開啟所有日誌記錄。 TRACE designates f

og4j的日誌級別OFFFATALERRORWARNINFODEBUGTRACE ALL

log4j定義了8個級別的log(除去OFF和ALL,可以說分為6個級別),優先順序從高到低依次為:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。 ALL 最低等級的,用於開啟所有日誌記錄。 TRACE designates finer-grain

【Linux運維入門】Linux環境編譯安裝配置Mysql

安裝說明 系統環境:CentOS-7 64位最小模式 安裝軟體:mysql-5.1.57.tar.gz 下載地址:點我去下載mysql-5.1.57 上傳位置:/usr/local/soft

【ASP.NET Core快速入門 RoutingMiddleware介紹以及MVC引入

pre configure onf mvc tin 常用 esp red 引入 前言 前面我們介紹了使用app.Map來配置路由,但是對於一般不是特別大的項目來說,我們不使用Map來進行路由配置。 配置路由 我們首先需要在Startup.cs文件中的Configu

小程序開發快速入門教程附源碼

五分鐘上手-微信小程序 1:用沒有註冊過微信公眾平臺的郵箱註冊一個微信公眾號, 申請帳號 ,點擊 https://mp.weixin.qq.com/wxopen/waregister?action=step1 根據指引填寫信息和提交相應的資料,就可以擁有自己的小程序帳號。註冊完成之後開始登

【ASP.NET Core快速入門部署到IIS

圖片 cor .com servers 訪問 publish img 控制臺 -m 原文:【ASP.NET Core快速入門】(二)部署到IIS配置IIS模塊 ASP.NET Core Module載地址:https://docs.microsoft.com/en-us/

Koa快速入門教程

Koa 是由 Express 原班人馬打造的,致力於成為一個更小、更富有表現力、更健壯的 Web 框架,採用了async和await的方式執行非同步操作。 Koa有v1.0與v2.0兩個版本,隨著node對async和await的支援,Koa2的正式釋出,本文Koa均

springBoot快速入門教程第一篇

Springboot是什麼? 1、springboot是在spring的基礎上進一步封裝,讓以前繁雜的配置全部簡化,從而快速構建專案。 2、對主流框架無配置整合,提高開發效率。 3、內建tomcat無需先部署在執行 4、與雲端計算天然整合 快速搭建一個簡單的springboot

C++快速入門---物件8

C++快速入門---物件(8)   類是一個模型。當為這個類建立例項的時候,也就是物件本身。 類是物件的一個藍圖、模型、模板。 物件是類的一個具體化的例項、實現。   類(class)就像一幅藍圖,它決定一個物件將是什麼樣的(具備什麼樣的屬性、功能)