<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 題外話 工作以來,一直都有想過寫個自己的博客或者后臺管理系統,主要是想把接觸的技術在這個上面進行實踐。也有個可以展示自己的作品。之前因為各種原因,還有毅力問題,都沒有啟動起來,這兩個月沒有工作的時間,想明白了一些事情,稍微能靜下心來,決心也更大了一些,那就從零開始建設吧! ***** # 選型 當前是已經搭好LNMP的環境 前端:bootstrap+jquery => 后面希望能用vue|angular|react重新實踐一遍。先用熟悉的把項目架起來 后端:thinkphp5.1.* => 后面希望能用laravel相關框架重新實踐一遍,tp5也在熟悉過程中,聽說tp6已經要出了,只能感嘆技術學習之路漫長。 為了前后端方便遷移和轉換,先使用后端框架模板渲染方式快速建起項目,后面再使用前后端分離,然后前后段可以實踐其他的框架,減少更換選型的重建的成本! ***** # 問題 ## 一、模板靜態資源404 為了方便定義靜態資源路徑,使用了模板常量。 定義的方式就是在配置文件的模板配置template.php里加上 ``` return [ 'tpl_replace_string' => [ // 這里我沒有改框架的入口文件 并且nginx的server配置項root參數是public目錄。這個常量相當于是直接定義STATIC到根目錄下的static目錄 '__STATIC__' => '/static', ] ]; ``` ## 二、workman和swoole的第三方庫無法composer提示要求thinkphp的版本大于6,那就降低庫的版本來適應框架版本 ``` composer require topthink/think-worker ^2.0 composer require topthink/think-swoole ^2.0 ``` ## 三、登錄界面驗證碼依賴驗證碼類庫 ``` composer require topthink/think-captcha ^2.0 ``` ## 四、verdor庫的調用 ``` 找到 應用目錄同級的`vendor`目錄 在地下找到`topthink`,該目錄下就是thinkphp官方的功能庫 找到核心類 看其命名空間是什么 比如驗證碼類庫 namespace think\\captcha; 再看類名是什么 Captcha 那么使用的方式就是在調用的類使用 use think\captcha\Captcha; // 命名空間/類名; $config = []; // 配置數組,可以把庫文件的默認設置復制一份,然后在此基礎上修改 $captcha = new Captcha($config); ``` ## 五、致命錯誤: Call to undefined function think\captcha\imagecreate(); 該函數依賴php_gd庫,沒有沒有安裝擴展需要安裝并開啟 ``` // 先看是否安裝 php -m // 會列出所有的擴展庫.發現沒有,基本確認 ``` ## 六、自定義類庫 在application同級extend目錄下創建lib目錄,在該目錄下創建ErrorCode.php 定義: ``` <?php namespace lib; class ErrorCode { const SUCCESS = 0; // 通用成功 const UNKNOWN_REQUEST = 1000; // 通用的未知請求 const ERROR_REQUEST = 1001; // 通用的錯誤請求 const PARAMS_ERROR = 1002; // 參數錯誤 } ``` 調用時在控制器引入 use lib\ErrorCode; 然后在代碼塊就可以直接使用 ``` // 部分代碼 僅為展示使用 $param = $this->request->post(); $response = [ 'code'=> ErrorCode::SUCCESS, 'msg'=> '登錄成功', 'data'=> [] ]; if(!$this->checkVerify($param['code'])){ $response['msg'] = '驗證碼不正確'; $response['code'] = ErrorCode::PARAMS_ERROR; $response['data'] = $param; return json($response); } ``` ## 七、數據模型的使用:驅動模式 ``` // 模型類的驅動核心代碼,像usb一樣插入對象就可以將其賦能到模型。 public function __call($method, $args) { if ('withattr' == strtolower($method)) { return call_user_func_array([$this, 'withAttribute'], $args); } return call_user_func_array([$this->db(), $method], $args); } public static function __callStatic($method, $args) { $model = new static(); return call_user_func_array([$model->db(), $method], $args); } ``` ## 八、調用模型的時候:The server requested authentication method unknown to the client ``` // 原因是我裝的mysql8.0版本,安全策略應該是默認不讓root用戶遠程驗證登錄 //使用root用戶登錄MySQL控制臺: root@54skyer:/# mysql -u root -p //回車后輸入自己的密碼再按回車 //并使用密碼更改身份驗證插件: mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY '自己的root密碼'; Query OK, 0 rows affected (0.08 sec) ``` # 進度 ## 登錄頁面完成
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看