05百融云策略引擎項目交付-laravel實戰完整交付定義常量分文件配置-獨立建立lib類處理-成功導出pdf-優雅草卓伊凡

05百融云策略引擎項目交付-laravel實戰完整交付定義常量分文件配置-獨立建立lib類處理-成功導出pdf-優雅草卓伊凡

引言

此前只是把關于如何把查詢內容導出pdf庫的代碼實現了,但是我們并沒有完成整個項目,這最后一個步驟就是安裝composer再安裝tcpdf庫,最后修改結構目錄實現完整項目功能,查詢得到結果導出pdf庫,本篇調整目錄結構,分文件實現代碼,完整交付過程完成交付。

演示demo地址

bairong.youyacao.com

實戰開始

我卓伊凡將為你提供完整的調整目錄結構,分文件實現代碼,完整交付過程,對待小項目也要如此,否則很多人永遠敷衍了事永遠成不了事。

首先上篇我們知道安裝完成了

2. 調整目錄結構

建議的目錄結構:

/ (項目根目錄)
├── composer.json
├── composer.lock
├── vendor/ (Composer自動生成)
├── config/
│   └── constants.php (常量配置)
├── lib/
│   ├── BairongAPI.php (API處理類)
│   └── PDFGenerator.php (PDF生成類)
├── temp/ (臨時文件目錄)
├── assets/
│   ├── css/
│   ├── js/
│   └── images/
│       └── logo.png (企業logo)
└── index.php (主入口文件)

我們查看目錄結構,

我們對應建立起來 其他文件夾

3. 分文件實現代碼

config/constants.php
<?php
// API配置常量
define('API_CODE', '保密');
define('APP_KEY', '保密');
define('STRATEGY_ID', '保密');
define('SANDBOX_URL', 'https://sandbox-api2.100credit.cn/infoverify/v3/info_verify');
define('PRODUCTION_URL', 'https://api2.100credit.cn/infoverify/v3/info_verify');// 路徑常量
define('ROOT_PATH', dirname(__DIR__));
define('TEMP_PATH', ROOT_PATH.'/temp');
define('ASSETS_PATH', ROOT_PATH.'/assets');
lib/BairongAPI.php
<?php
require_once ROOT_PATH.'/config/constants.php';class BairongAPI
{// ... 保持原有的BairongAPI類代碼不變 ...// 只需將硬編碼的配置改為使用常量,如:private $apiCode = API_CODE;private $appKey = APP_KEY;// ... 其他代碼不變 ...
}

那么也就是

將我們在 constants.php中定義的常量 改過來

lib/PDFGenerator.php
<?php
require_once ROOT_PATH.'/vendor/autoload.php';
require_once ROOT_PATH.'/config/constants.php';class PDFGenerator
{// ... 保持原有的PDFGenerator類代碼不變 ...// 修改logo路徑使用常量:$logoFile = ASSETS_PATH.'/images/logo.png';// ... 其他代碼不變 ...
}

這個就是主要的 類,其實我們之前就沒有方logo 不過我們可以放個logo后面

index.php
<?php
require_once __DIR__.'/config/constants.php';
require_once __DIR__.'/vendor/autoload.php';
require_once __DIR__.'/lib/BairongAPI.php';
require_once __DIR__.'/lib/PDFGenerator.php';// 確保臨時目錄存在
if (!file_exists(TEMP_PATH)) {mkdir(TEMP_PATH, 0755, true);
}// ... 保持原有的表單處理邏輯 ...
// 修改PDF導出部分的文件路徑:
$pdfFile = TEMP_PATH.'/verify_result_'.date('YmdHis').'.pdf';
// ... 其余代碼不變 ...

接下來這個是入口文件,index 我們修改為以下內容

改好后報錯

Parse error: syntax error, unexpected token “<”, expecting end of file in /www/wwwroot/bairong.youyacao.com/lib/PDFGenerator.php on line 320

這個錯誤是因為在 PDFGenerator.php 類文件中直接包含了 HTML 代碼,這是不允許的。HTML 導出按鈕的代碼應該放在 index.php 文件中,而不是 PDF 生成類中。

修正方案

1. 修改 lib/PDFGenerator.php

刪除文件末尾的 HTML 代碼部分,確保類文件只包含 PHP 代碼:

<?php
require_once ROOT_PATH.'/vendor/autoload.php';
require_once ROOT_PATH.'/config/constants.php';class PDFGenerator
{// ... 保持原有的 PDFGenerator 類代碼 ...// 確保文件末尾沒有 ?> 閉合標簽和 HTML 代碼// 類定義結束后不要有任何其他內容
}

2. 在 index.php 中添加導出按鈕

index.php 的結果顯示區域添加導出按鈕代碼:

<!-- 在 index.php 的結果顯示區域添加 -->
<?php if (isset($result)): ?><?php echo (new BairongAPI())->formatResult($result); ?><?php if (!isset($result['error'])): ?><div class="mt-4 text-center"><form method="post" style="display: inline;"><input type="hidden" name="name" value="<?php echo htmlspecialchars($_POST['name'] ?? ''); ?>"><input type="hidden" name="id_number" value="<?php echo htmlspecialchars($_POST['id_number'] ?? ''); ?>"><input type="hidden" name="phone" value="<?php echo htmlspecialchars($_POST['phone'] ?? ''); ?>"><button type="submit" name="export_pdf" class="btn btn-danger"><i class="fas fa-file-pdf me-2"></i>導出PDF報告</button></form></div><?php endif; ?>
<?php endif; ?>

3. 完整修正后的 lib/PDFGenerator.php

<?php
require_once ROOT_PATH.'/vendor/autoload.php';
require_once ROOT_PATH.'/config/constants.php';class PDFGenerator
{/*** 生成查詢結果PDF* @param array $result 查詢結果數據* @param array $queryParams 查詢參數(姓名、身份證、手機號)* @return string PDF文件路徑*/public static function generateResultPDF($result, $queryParams){// 創建TCPDF實例$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);// 設置文檔信息$pdf->SetCreator('優雅草科技');$pdf->SetAuthor('優雅草科技');$pdf->SetTitle('百融云信息驗證報告');$pdf->SetSubject('信息驗證結果');$pdf->SetKeywords('百融云, 信息驗證, 優雅草科技');// 設置默認等寬字體$pdf->SetDefaultMonospacedFont('courier');// 設置邊距$pdf->SetMargins(15, 15, 15);$pdf->SetHeaderMargin(5);$pdf->SetFooterMargin(10);// 設置自動分頁$pdf->SetAutoPageBreak(TRUE, 25);// 設置圖像比例$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);// 添加頁面$pdf->AddPage();// 生成封面self::generateCoverPage($pdf, $queryParams);// 添加新頁面放置詳細內容$pdf->AddPage();// 生成基本信息部分self::generateBasicInfo($pdf, $result, $queryParams);// 生成驗證結果部分self::generateVerificationResult($pdf, $result);// 生成手機驗證部分self::generatePhoneVerification($pdf, $result);// 生成特殊名單部分self::generateSpecialList($pdf, $result);// 定義輸出文件名$filename = 'verify_result_'.date('YmdHis').'.pdf';$filepath = TEMP_PATH.'/'.$filename;// 輸出PDF文件$pdf->Output($filepath, 'F');return $filepath;}// ... 保持其他方法不變 ...// 注意:不要在此文件末尾包含任何HTML代碼或PHP閉合標簽
}

4. 完整實現流程

  1. 初始化項目
mkdir myproject
cd myproject
  1. 安裝依賴
composer require tecnickcom/tcpdf
  1. 創建目錄結構
mkdir -p config lib temp assets/{css,js,images}
  1. 添加配置文件
    • 將上面的constants.php放入config/目錄
    • 將企業logo圖片放入assets/images/目錄
  1. 添加類文件
    • BairongAPI.php放入lib/目錄
    • PDFGenerator.php放入lib/目錄
  1. 設置權限
chmod -R 755 temp/
  1. 修改index.php
    • 使用上面提供的分文件版本的index.php
  1. 測試運行
    • 確保PHP環境正常運行(建議PHP 7.4+)
    • 訪問index.php進行測試

5. 關鍵注意事項

  1. 字體支持
    • TCPDF默認不包含中文字體,需要手動添加
    • 可以從vendor/tecnickcom/tcpdf/fonts/目錄中選擇或添加新字體
  1. 臨時目錄
    • 確保Web服務器對temp/目錄有寫入權限
    • 定期清理臨時文件(可以設置cron任務)
  1. 生產環境
    • 禁用測試環境URL
    • 啟用SSL證書驗證
    • 限制PDF生成頻率防止濫用
  1. 錯誤處理
    • 添加PDF生成失敗的異常處理
    • 記錄生成日志
  1. 性能優化
    • 對于高并發場景,考慮緩存PDF結果
    • 使用opcache提升PHP性能

完整修改后 我們成功可以訪問了

也可以進行查詢了

本項目完整了整個功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917019.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917019.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917019.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模型訓練速度慢排查

一、nvidia-smi 查看 GPU 的利用率與顯存。若 GPU 利用率低或波動&#xff0c;說明 CPU 處理數據的速度跟不上 GPU 計算的速度&#xff0c;需要檢查數據傳輸并調整 num_workers&#xff1b;若 GPU 顯存充足&#xff0c;可以逐步增加 batch_size_per_card 直至顯存占滿&#xff…

STM32學習記錄--Day4

今天了解了一下SPI總線&#xff1a;1.SPI內部結構??&#x1f50c; SPI 四大核心引腳功能詳解??1. ??MOSI (Master Output Slave Input)????功能??&#xff1a;??主機輸出數據線????工作流程??&#xff1a;主機內部發送數據寄存器 (TxDR) 的數據 → 移位寄存…

【網絡安全】等級保護2.0解決方案

等保2.0&#xff08;網絡安全等級保護2.0&#xff09;是我國網絡安全領域的基礎性制度&#xff0c;在1.0版本基礎上擴展了云計算、大數據、物聯網等新興領域&#xff0c;形成覆蓋全場景的安全防護框架。其核心是按信息系統重要程度劃分等級&#xff08;1-5級&#xff09;&#…

TypeScript 基礎介紹(二)

引言&#xff1a;從基礎到結構化類型 在《TypeScript 基礎介紹&#xff08;一&#xff09;》TypeScript基礎介紹&#xff08;一&#xff09;-CSDN博客中&#xff0c;我們探討了 TypeScript 的類型系統基礎、聯合類型、類型斷言和類型守衛等核心特性。這些內容解決了 JavaScript…

【科研繪圖系列】R語言繪制線性相關性

文章目錄 介紹 加載R包 數據下載 導入數據 數據預處理 畫圖 系統信息 參考 介紹 【科研繪圖系列】R語言繪制線性相關性 加載R包 library(tidyverse) library(ggplot2) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2

FastAPI的請求-響應周期為何需要后臺任務分離?

url: /posts/c7b54d6b3b6b5041654e69e5610bf3b9/ title: FastAPI的請求-響應周期為何需要后臺任務分離? date: 2025-07-31T06:11:25+08:00 lastmod: 2025-07-31T06:11:25+08:00 author: cmdragon summary: FastAPI 的請求-響應周期遵循 ASGI 協議,類似于餐廳點餐流程。同步處…

多種錄音筆錄音芯片方案推薦

多種錄音筆錄音芯片方案推薦一、引言隨著信息技術的飛速發展&#xff0c;錄音筆作為一種重要的音頻記錄設備&#xff0c;在會議記錄、采訪、學習等眾多場景中得到廣泛應用。其核心的錄音芯片方案直接影響錄音質量、功能特性以及產品成本。唯創知音作為音頻芯片領域的知名廠商&a…

Linux系統編程Day2-- Linux常用操作

一、Linux 基本命令概覽以下是一些常用的Linux命令操作&#xff0c;后續我們會對其每個單獨如何使用進行講解。操作類型常用命令示例文件/目錄操作ls, cd, cp, mv, rm, mkdir, rmdir查看文件內容cat, less, more, head, tail查找操作find, grep, locate, which權限管理chmod, c…

cs336 assignment1 作業環境配置

代碼結構 所有的代碼寫到cs336_basics/* 下面&#xff0c;在adapters.py里調用自己的.py&#xff0c;通過所有的test。 作業資料參考 karpathy視頻倉庫&#xff1a; 視頻 github倉庫 測試項目運行環境 下載uv uv官網倉庫 使用命令&#xff1a; powershell -ExecutionPoli…

YOLOv11來了,使用YOLOv11訓練自己的數據集和推理(附YOLOv11網絡結構圖)

文章目錄前言一、YOLOv11代碼下載地址1.YOLOv11模型結構圖二、數據集準備1.數據集標注軟件2.voc數據集格式轉換3.數據集劃分4.修改yolo的訓練配置文件三、YOLO環境配置教程1.pytorch環境安裝2.其他依賴安裝四、YOLOv11訓練五、YOLOv11推理六、解決訓練過程中斷怎么繼續上次訓練…

20250731在榮品的PRO-RK3566開發板的Android13下跑通敦泰的FT8206觸控芯片

20250731在榮品的PRO-RK3566開發板的Android13下跑通敦泰的FT8206觸控芯片 2025/7/31 17:48緣起&#xff1a;本文前置條件&#xff1a;已經解決FT8206和PRO-RK3566的硬件連接。 通過i2cdect可以掃描到i2c從機地址&#xff1a;0x38。【8位地址為0x70】緣起&#xff1a;本文只分析…

異常檢測:算法分類及經典模型概覽

第一部分&#xff1a;異常檢測的核心概念 在深入算法細節之前&#xff0c;理解異常檢測的“語境”至關重要。 1. 什么是異常檢測&#xff1f; 異常檢測&#xff08;Anomaly Detection 或 Outlier Detection&#xff09;旨在通過數據挖掘技術&#xff0c;識別出數據集中與大多數…

技術干貨 | 矢網DTF測量技術:透視線纜、天線與波導內部缺陷的“射頻X光”(二)

無線通信、雷達等領域中&#xff0c;射頻組件與傳輸系統的性能至關重要&#xff0c;其內部微小損傷易導致信號問題甚至系統失效。傳統測試無法精確定位故障點&#xff0c;排查困難。DTF測量&#xff0c;矢網賦予的“透視眼”&#xff01;它能穿透“黑箱”&#xff0c;精確定位線…

【[CSP-J 2022] 上升點列】

題目 [CSP-J 2022] 上升點列 題目描述 在一個二維平面內&#xff0c;給定 n 個整數點 (x i ,y i? )&#xff0c;此外你還可以自由添加 k 個整數點。 你在自由添加 k 個點后&#xff0c;還需要從 nk 個點中選出若干個整數點并組成一個序列&#xff0c;使得序列中任意相鄰兩點間…

Kong API Gateway的十年進化史

一、技術基因的誕生&#xff08;2007-2015&#xff09; 2007年&#xff0c;三位意大利開發者Augusto Marietti、Marco Palladino和Michele Orru在博洛尼亞的一個小車庫中創立了Mashape公司。 最初他們開發了一個名為Mashup的API聚合平臺&#xff0c;試圖通過整合第三方API為開發…

藍牙設備配對:從機發現主機全過程

在藍牙 paging 過程中&#xff0c;從設備&#xff08;Slave&#xff09;是通過特定的掃描機制和跳頻方式來發現主設備發送的 ID 包的&#xff0c;具體過程如下&#xff1a;從設備處于特定掃描模式&#xff1a;從設備需要處于 Page Scan 模式&#xff0c;才能夠接收主設備發送的…

聚觀早報 | 三星獲特斯拉AI芯片訂單;小米16首發成安卓最強SOC;iPhone 17 Pro支持8倍光學變焦

聚觀早報每日整理最值得關注的行業重點事件&#xff0c;幫助大家及時了解最新行業動態&#xff0c;每日讀報&#xff0c;就讀聚觀365資訊簡報。整理丨肖羽7月29日消息三星獲特斯拉AI芯片訂單小米16首發成安卓最強SOCiPhone 17 Pro支持8倍光學變焦寧德時代滑板底盤公司啟動首輪融…

Gemini Fullstack LangGraph Quickstart(DeepSeek+Tavily版本)

文章目錄參考資料說明Gemini Fullstack LangGraph QuickstartDeepSeek Fullstack LangGraph Quickstart項目部署完整源碼地址后端部署前端部署參考資料 DeepResearch應用開發實戰網盤課件資料 說明 本文僅供學習和交流使用&#xff0c;感謝賦范社區相關老師的辛苦付出&#…

鋼筋計數誤差↓78%!陌訊多模態融合算法在建筑地產AI質檢的落地實踐

?摘要??針對建筑地產行業鋼筋驗收場景的高誤差痛點&#xff0c;本文解析陌訊視覺算法的多模態融合架構如何實現毫米級精度目標檢測。實測顯示&#xff1a;在Jetson Xavier NX邊緣設備上&#xff0c;鋼筋計數mAP0.5達??92.4%??&#xff0c;較基線模型提升28個百分點&…

負載均衡 LoadBalance

問題引入 我們一個服務可能會進行多機部署&#xff0c;也就說多臺服務器組成的集群共同對外提供一致的服務&#xff0c;那么我們的微服務的代碼就需要拷貝多份&#xff0c;部署到不同的機器上。 我們使用 IDEA 來開啟多個相同的服務 這里以 product-service 為例&#xff1a;…