ホームページ バックエンド開発 PHPチュートリアル そばかすを消す最も簡単な方法と世界一簡単なPHP開発モデルの作り方 1/5ページ

そばかすを消す最も簡単な方法と世界一簡単なPHP開発モデルの作り方 1/5ページ

Jul 29, 2016 am 08:35 AM

/************************************/
/* 著者: 年長の若者
/* 電子メール:wenadmin@sina.com
/* 送信元: http://blog.csdn.net/hahawen
/************************************/
「最もシンプルな」Web スクリプト言語として、PHP は国内市場でますます大きくなり、PHPer も増えていますが、モードの問題がどのようなものであるかについては、ほとんどの人が考慮されていないように感じます。あなたの現在の仕事に最も適しているのはどれですか? 結局のところ、効率が最も重要です (節約された時間をゲームをプレイするために使用するのは、どれほど美しいことでしょう...)。 MVC が第一の選択肢です。www.sourceforge.net には、MVC に基づく優れたオープンソース プロジェクトが多数あります。
数日前、私は記事公開システムに重点を置いた会社の Web サイトを刷新しました。私の上司は、バックエンドは好きなように設計できる、唯一の前提条件は高速であることだと言いました。そこで、シンプルな出版システムのフレームワークを構築しました。純粋に記事公開システムに注目すると、基本的に「中小規模」の企業 Web サイト向けの記事公開システムの要件を満たすことができ、バックグラウンドの PHP コードの合計は 800 行を超えず、任意の拡張をサポートします。そしてプラグイン機能。
これ以上ナンセンスではありません。以下に私の構造について話させてください。お役に立てば幸いです。
注: 開始する前に、テンプレート処理ツール クラス:「smarttemplate」をダウンロードし、いくつかのテンプレートの簡単な使用法を理解する必要があります。
私のテスト環境: windows2k/apache2/php4.3.2/smarttemplate クラス ライブラリ
まず、Web サイト全体でのファイルの配布について説明します。次の章では、次のディレクトリとファイルが作成され、埋められます。サーバーの Web ルート ディレクトリは「C:/Apache2/htdocs/」です
Web サイトのメイン フォルダーとして以下のフォルダー「cmstest」を作成しました
フォルダー「cmstest」の下のサブファイル構造は次のとおりです:
/config. .php
/list1.php
/list2.php
/new.php
/add.php
/view.php
/page.js
/src/MysqlUtil.php
/src/ArticleUtil.php
/src / CoreUtil.php
/src/ParseTpl.php
/src/lib/smarttemplate/*.* このディレクトリは、smarttemplate クラス ライブラリの保存に使用されます
/smart/template/list1.htm
/smart/template/list2.htm
/smart/template/new.htm
/smart/template/add.htm
/smart/template/view.htm
/smart/cache/
/smart/temp/
設計手順:
自社の Web サイトの機能と機能を検討する設計したテンプレートの構造を把握し、実装する機能をまとめてリスト化します。
関数リストを分析し、関数を分類します。各タイプの関数には共通点があり、同じ方法で実装できます。
関数に基づいてデータベースのテーブル構造を設計します
データベース名を含むWebサイトの基本情報を記録する構成ファイルconfig.inc.phpを設計します
関数の種類ごとにデータベースクエリを設計しますインターフェース関数、そのため、将来の同様の操作では、このインターフェイスを呼び出すだけで済みます。これにより、将来発生する可能性のある多数のコード重複操作が回避され、コード再利用の目的が達成されます。
今後テンプレート ツールを呼び出すときに、独自のパッケージ化関数を定義するだけで済みます。
基本的な機能はこれでOKです。簡単なページの実装とテンプレートの処理を始めましょう。
ここからは、「最も単純な記事公開システム」を段階的に実装する方法を確認するために、単純なシステムの設計を開始します。はるかに複雑です。
1. 私のケースの分析:
はは、この顧客プロジェクトはとてもシンプルで満足です...
list1.php: 3 つの記事リストと 1 つのボタンがあります。「PHP 開発記事リスト」「PHP 開発人気記事リスト」 asp開発最新記事」「新規記事追加」
list2.php: 記事リストは2つあります「asp開発記事リスト」「asp開発人気記事リスト」
new.php: 記事追加用フォームページ
add.php: new.phpフォームを扱うページ
view.php: 記事閲覧用ページ
2. 分析機能
「php開発記事一覧」「asp開発記事一覧」-------の掲載順による記事を逆順に表示、各ページに5記事ずつ表示
「php開発注目記事リスト」「asp開発注目記事リスト」-----記事のクリック数と閲覧数順に記事を表示します。 3件の記事
「ASP開発に関する最新記事」を記事の公開順に逆順に表示し、3件の記事を表示
「新規記事を追加」-----記事タイトル/を含む記事の公開機能author/content
「記事ビュー」--------記事の内容を表示します
包括的に見て、以下の機能を分類します:
1. 記事リスト: 通常のページングリスト、クリック数によるリスト、公開順のリスト
2. 記事の公開: フォームの入力と処理
3. 記事の閲覧: 記事の内容の読み取りと表示
はは、確かに機能がシンプルすぎます。
3. 設計データベース:
データベース名: cmstest
データテーブル:
CREATE TABLE `article` (
`id` INT NOT NULL AUTO_INCREMENT,
`title` VARCHAR( 100 ) NOT NULL 、
`content` TEXT NOT NULL 、
`datetime` DATETIME NOT NULL 、
`clicks` INT( 11 ) 、
`pid` TINYINT( 2 ) NOT NULL 、
PRIMARY KEY ( `id` )
);
CREATE TABLE `cat` (
`cid` TINYINT( 2 ) NOT NULL 、
`cname` VARCHAR( 20 ) NOT NULL 、
主キー ( `cid` )
); ------------ ----------
article テーブルは記事コンテンツ テーブルです。
------ ----------
`id `記事番号
`title` 記事タイトル
`content` 記事内容
`datetime` 公開時刻
`clicks` クリック数
`pid` 分類表番号
- ------------------------- ---------------
catテーブルは記事のカテゴリーテーブルです
------------------------ --
`cid` 分類表番号
`cname` 分類名
-------- --------------------
上記はテーブル構造のデータベースです。これだけでは不十分ですが、データも追加します
INSERT INTO `cat` VALUES(1, " php 開発"), (2, "asp 開発");
INSERT INTO `article` VALUES(1, "php 開発 1", "php 開発 1 コンテンツ", "2004-8-1 1:1:1", 0, 1);
INSERT INTO `article` VALUES(2, "php 開発 2", "php 開発 2 コンテンツ ", "2004-8-2 1:1:1", 0, 1); Article` VALUES(3, "php 開発 3", "php 開発 3 コンテンツ", "2004-8-3 1 :1:1", 4, 1);
INSERT INTO `article` VALUES(4, "php 開発4", "php 開発 4 コンテンツ", "2004-8-4 1:1:1", 3, 1 );
INSERT INTO `article` VALUES(5, "php 開発 5", "php 開発 5 コンテンツ" , "2004-8-5 1:1:1", 2, 1);
INSERT INTO `article` VALUES (6, "php 開発 6", "php 開発 6 コンテンツ", "2004-8-6 1: 1:1", 1, 1);
INSERT INTO `article` VALUES(7, "php 開発 7", "php 開発 7 コンテンツ", "2004-8-7 1:1:1", 0, 1) ;
INSERT INTO `article` VALUES(8, "jsp 開発 1", "jsp 開発 1 コンテンツ", "2004 -8-1 1:1:1", 0, 2); 9, "jsp 開発 2", "jsp 開発 2 コンテンツ", "2004-8-2 1:1:1 ", 0, 2);
INSERT INTO `article` VALUES(10, "jsp 開発 3", " jsp 開発 3 コンテンツ", "2004-8-3 1:1:1", 4, 2);
INSERT INTO `article` VALUES(11, "jsp 開発 4", "jsp 開発 4 コンテンツ", "2004- 8-4 1:1:1", 3, 2);
INSERT INTO `article` VALUES(12, " jsp 開発 5", "jsp 開発 5 コンテンツ", "2004-8-5 1:1:1" , 2, 2);
INSERT INTO `article` VALUES(13, "jsp 開発 6", "jsp 開発 6 コンテンツ", "2004-8-6 1:1:1", 1, 2); `article` VALUES(14, "jspdevelopment 7", "jspdevelopment 7 content", "2004-8-7 1:1:1", 0, 2);
これでデータベースの設計が完了しました。次に、具体的な実装について説明します。
4. config.inc.php ファイルを設計します
このファイルは、Web 上のいくつかの共通データ情報といくつかのパラメーターを設定するために使用されます。以下は、このページを通じて必要なデータを取得します。 ; ?php
//データベース設定
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost'); ' cmstest');
define('DB_PCONNECT', true);
// Web の基本パス設定
define('C:/Apache2/htdocs/cmstest/'); CMS_ROOT.'src/');
//smarttemplate テンプレート解析ツールの設定
define('SMART_REUSE_CODE', false);
define('SMART_TEMP_DIR' , CMS_ROOT.'smart/temp/');
define('SMART_CACHE_DIR', CMS_ROOT.'smart/cache/');
require_once(CMS_SRCPATH .'lib/smarttemplate/class.smarttemplate) .php');
//含まれる基本ファイルにはいくつかの基本的な関数が含まれます
require_once CMS_SRCPATH.'ArticleUtil.php';
require_once CMS_SRCPATH.'CoreUtil.php '; CMS_SRCPATH.'ParseTpl.php';
//session_cache_limiter('private_no_expire');
session_start();
どこで定義しますか? ; 独自の apach Web パスに応じてパスを変更します (冒頭で紹介したフォルダー構造を参照)。
5. 関数型インターフェースの作成 (1)
まず、データベース操作を簡素化するために mysql データベース関数をラップします。インターネット上には、このようなオープンソース クラスが多数あります。ただし、ここでは私自身のニーズと習慣に基づいて mysql 関数を個人的にパッケージ化しており、それが良いか悪いかは気にしません。ここをざっと見てみましょう。異なるパッケージのクラス操作は異なります。ここでの主な目的は、コードにあまり固執せずにこの「アーキテクチャ」を理解することです。
------MysqlUtil.php--------
function dbConnect(){
global $cnn; 
$cnn = (DB_PCONNECT? mysql_pconnect(DB_HOST, DB_NAME, DB_PASSWORD):
mysql_connect(DB_HOST, DB_NAME, DB_PASSWORD)) または
die('データベース库连接错误'); 
mysql_select_db(DB_NAME, $cnn) or die('数据库选择错误'); 
mysql_query("SET AUTOCOMMIT=1"); 
}
関数 &dbQuery($sql){
グローバル $cnn; 
$rs = &mysql_query($sql, $cnn); 
while($item=mysql_fetch_assoc($rs)){
$data[] = $item; 
}
$data を返します。 
}
function &dbGetRow($sql){
global $cnn; 
$rs = mysql_query($sql) or die('sql语句执行错误'); 
if(mysql_num_rows($rs)>0)
return mysql_fetch_assoc($rs); 
else
null を返す。 
}
function dbGetOne($sql, $fildName){
$rs = dbGetRow($sql); 
return sizeof($rs)==null? null: (isset($rs[$fildName])? $rs[$fildName]: null); 
}
function &dbPageQuery($sql, $page=1, $pageSize=20){
if($page===null) return dbQuery($sql); 
$countSql = preg_replace('|SELECT.*FROM|i','SELECT COUNT(*) count FROM', $sql); 
$n = (int)dbGetOne($countSql, 'count'); 
$data['pageSize'] = (int)$pageSize<1? 20: (int)$pageSize; 
$data['recordCount'] = $n; 
$data['pageCount'] = ceil($data['recordCount']/$data['pageSize']); 
$data['page'] = $data['pageCount']==0? 0: ((int)$page<1?1: (int)$page); 
$data['page'] = $data['page']>$data['pageCount']? $data['pageCount']:$data['page']; 
$data['isFirst'] = $data['page']>1? 真偽; 
$data['isLast'] = $data['page']<$data['pageCount']? 真偽; 
$data['start'] = ($data['page']==0)? 0: ($data['page']-1)*$data['pageSize']+1; 
$data['end'] = ($data['start']+$data['pageSize']-1); 
$data['end'] = $data['end']>$data['recordCount']? $data['recordCount']: $data['end']; 
$data['sql'] = $sql.' LIMIT '.($data['start']-1).','.$data['pageSize']; 
$data['data'] = &dbQuery($data['sql']); 
$data を返す; 
}
関数 dbExecute($sql){
グローバル $cnn; 
mysql_query($sql, $cnn) or die('sql语句执行错误'); 
return mysql_affected_rows($cnn); 
}
関数 dbDisconnect(){
グローバル $cnn; 
mysql_close($cnn); 
}
function sqlGetOneById($table, $field, $id){
return "SELECT * FROM $table WHERE $field=$id"; 
}
function sqlMakeInsert($table, $data){
$t1 = $t2 = array(); 
foreach($data as $key=>$value){
$t1[] = $key; 
$t2[] = "'".addslashes($value)."'"; 
}
return "INSERT INTO $table (".implode(",",$t1).") VALUES(".implode(",",$t2).")"; 
}
function sqlMakeUpdateById($table, $field, $id, $data){
$t1 = array();
foreach($data as $key=>$value){
$t1[] = "$key= '".addslashes($value)."'";
}
return "UPDATE $table SET ".implode(",", $t1)." WHERE $field=$id";
}
function sqlMakeDelById($ table, $field, $id){
return "DELETE FROM $table WHERE $field=$id";
?>
5. 関数型インターフェースの作成 (2)
内容を見てみましょう。合計で必要な実装関数のパッケージ化
----------------ArticleUtil.php----------------
//記事一覧を表示 Function
//getArticleList(記事カテゴリ、ソート方法、現在表示しているページ、各ページに表示される記事数)
function getArticleList($catId, $order, $page, $pageSize){
$sql = "SELECT * FROMarticle WHERE pid=$catId ORDER BY $order";
return dbPageQuery($sql, $page, $pageSize);
//記事のコンテンツをクエリする
//getArticle (記事番号)
function getArticle($id ; return dbGetRow($ sql);
}
//記事を追加
//addArticle (記事コンテンツ配列)
function addArticle($data){
$sql = sqlMakeInsert('article' , $data);
return dbExecute($sql);
?> このコードはもっと簡単ではないでしょうか?これが、mysql 関数を自分でラップする利点です。
関数がどのように実装されているかを調べてみましょう。
「php開発記事リスト」----------getArticleList(1, "id DESC", $page, 5)
「asp開発記事リスト」--------getArticleList(2, "id DESC", $page, 5)
"php 開発の注目記事リスト"----getArticleList(1, "クリック数 DESC, id DESC", 1, 3)
"ASP 開発の注目記事リスト"----getArticleList( 2, "クリック DESC, id DESC", 1, 3)
"ASP 開発の最新記事"--------getArticleList(2, "id DESC", 1, 3)
"新しい記事を追加"-- -----------addArticle($data)
「記事を表示」--------------getArticle($id)
6.smarttemplate クラスをパックします (革命はまだ成功していません、同志たちはまだ努力しなければなりません)
ここでは、smarttemplate の具体的な使用方法には触れません。そうしないと、言葉が足りなくなってしまい、終わらせることができません。以下は特定のラッパー関数です
---------------ParseTpl.php-----
function renderTpl( $ viewFile, $data){
$page = new SmartTemplate($viewFile); foreach($data as $key=>$value){
if(isset($value[data])){
$page- > assile($ key、$ value [data]);
現在のページ 1/5 12345次のページ

上記の「世界一簡単な PHP 開発モデルの作成」には、そばかすを消す最も簡単な方法の内容が記載されています。PHP チュートリアルに興味がある友人の参考になれば幸いです。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

See all articles