ホームページ > バックエンド開発 > PHPチュートリアル > PHPもどきブログパーク・個人ブログ(2)_PHPチュートリアル

PHPもどきブログパーク・個人ブログ(2)_PHPチュートリアル

WBOY
リリース: 2016-07-13 17:51:41
オリジナル
1372 人が閲覧しました

2回目の記事となりますので、どうぞよろしくお願いいたします。これはこのブログ システムの中核でもあります。このブログを書いたら、私のブログサイトに掲載します。ここに私の履歴書もあります。
早速ですが、前の記事の中心となるコンセプトは、「アクションを与える」「何かをする」です!
この記事では、コードを使用してこの概念が何を意味するかを説明します。まず、このファイルはデータ層処理クラスです。




このモデル クラスを簡単に紹介します。これは crud などの一般的な操作を実行するためにデータベースの基本クラスを継承し、データベース オブジェクト $db を使用してデータを操作します。
データ操作には 2 つの重要なメソッドがあります。storePostFormValues() と storeDiaryFormValues() です。これら 2 つのメソッドはデータ フローの始まりです。
他に、addChildNumber( ) と ReduceChildNumber( ) という 2 つの興味深いメソッドがあります。これらは、ドキュメントの挿入または削除時のブラックボックス操作を担当します。私のドキュメントは複数のカテゴリに分類できるため、ドキュメントを操作するときに考慮しなければならない問題の 1 つは、カテゴリ テーブルにこのカテゴリに属する​​ドキュメントの数を記録するフィールドがあることです。したがって、これらの数値の値は動的に変更する必要があります。

次に、post.php コントローラーを使用して、データのプロセスを開始できます (コントローラーはまだクラスではないため、API ドキュメントを生成できません。これは実際の MVC アーキテクチャではないためです)。つまり、MVC の前に、これは次のようになります。また、MVC とは何か、そしてそれを自分で適用して独自の MVC を作成する方法を理解するのにさらに役立ちます。
以下の状況はすべて仮定です:
$action = "空から彼女をください!"; このコントローラーを渡して、何が起こるか見てみましょう。

require_once( "config/config.php" );
session_start( );
$action = isset( $_GET['action'] ) $_GET['action'] : "";
$username = isset( $_SESSION['username'] ) $_SESSION['username'] : "";

if( !$ユーザー名 )
{
header("場所:index.php?action=login");
終了します;
}

ここには重要なフロー制御ステートメント switch があり、これは switch を意味します。そのため、上記の $action = "Give me a girl from the sky!" が渡されるとき、可能性は 2 つだけです。1 つは On、もう 1 つは On です。オフ。ここにはちょっとしたダジャレがあり、それを目にする生徒もいるかもしれません。おいおい!
もっと身近な話ですが、スイッチがこれらの $actions をどのようにオン/オフにするかを見てください。コントローラーにはそのようなスイッチがないので、空からガールフレンドを得ることができないのは明らかです。そのため、コードについてしか話せません。

スイッチ( $action )
{
ケース「新しい投稿」:
newPost( );
休憩

ケース「削除」:
削除( ) ;
休憩

ケース「updatePost」:
updatePost( );
休憩

ケース「ドラフト」:
listDraft( );
休憩

ケース「ログアウト」:
ログアウト( );
休憩

ケース「isPost」:
listPost( );
休憩

ケース「異なるカテゴリ投稿」:
diffentCategoryPost( );
休憩

ケース「カテゴリ外」:
unCategory( );
休憩

デフォルト:
listPost( );
休憩
}


各スイッチはデフォルトのスイッチを定義する必要があります。これにより、ガールフレンドがいない場合でも、ゲイの友達がいることを確認できます。
行動に移すにはどうすればよいでしょうか?
バックグラウンド フレームワークのナビゲーションである URL を見てみましょう。これは、実際にはこれらのアクションで構成されています。これにより、コントローラーで定義されたメソッドで GET (これらの変数の値を取得) できるようになり、より詳細な制御が可能になります。
この URL がコントローラーに到達すると、isPost スイッチをオンにして、次のメソッドを呼び出すことができます。スイッチは私たちがよく行うことです。
ここで場所を変えただけです。
わかりました。 このスイッチの次のメソッドを見てみましょう。

関数 listPost( )
{
$results = array( );
$results['pageTitle'] = "投稿リスト" ;
$results['path'] = "エッセイ";
// メッセージを設定します
If ( isset( $_GET['error'] ) )
{
If ( $_GET['error'] == "InsertedFailed" ) $results['errorMessage'] = "ドキュメントの追加に失敗しました";
If ( $_GET['error'] == "postDeleteFailed" ) $results['errorMessage'] = "ドキュメントの削除に失敗しました";
}
If ( isset( $_GET['status'] ) )
{
If ( $_GET['status'] == "changesSaved" ) $results['statusMessage'] = "ドキュメントは保存されました!";
If ( $_GET['status'] == "削除されました" ) $results['statusMessage'] = "ドキュメントは削除されました!";
If ( $_GET['status'] == "挿入されました" ) $results['statusMessage'] = "新しいドキュメントが追加されました!";
If ( $_GET['status'] == "SaveToDraft" ) $results['statusMessage'] = "ドキュメントは下書きボックスに保存されました!";
}

// カテゴリ別にドキュメントを参照します
$db = MySQL::getInstance( );
    $pagination = new Pagination;
    $cat = new Category;
    $results['categories'] =  $cat->getCategoryList("post");
   
    $pagination->countSQL = "select * from post where type = 'post' " ;
    $db->Query( $pagination->countSQL );
    $pagination->totalRecords = $db->RowCount( );
    $records = $db->HasRecords( $pagination->rebuiltSQL( ) );
    if( $records )
    {
        $results['posts'] = $db->QueryArray( $pagination->rebuiltSQL( ) );
        require_once(TEMPLATE_PATH . "/post/post_list.php");
    }
    else
    {
        require_once(TEMPLATE_PATH . "/post/post_list.php");
    }
   
 }
 

我们定义了一个数组,$results = array( ); 这个数组的作用明显,它将保存我们从 model 中获取的任何数据,也可以保存从url上 GET 的特殊参数。然后将在我们下面require_once(*****) 包含的模版中显示出来, 路径定义在了 path 变量中。
同时我们会接收2个提示参数,
error , 表示操作出现错误,任何人都在所难免,包括电脑,谁都会犯错,关键是去承认,电脑做的很好,他们勇于承认错误。
status; 表示状态,就是成功的操作。
$pagination = new Pagination;

这个类是我们的分页类,我们传入一个 总的数量给它,然后它自己会算出总页数,每跳转一个页面,相当于刷新了一次,所以大家的做法就是,在构造器里 GET(获取)url上的page 的值,
让我们知道是当前那一页了。同时我们重新生成了查询的语句,后面加上一条限制的语句,类似 limit $start(起始的id), $offset(长度); 原理就是从这个id起,往后给我10 条记录;
我的设定就是 10 条,你也可以更灵活。


$cat = new Category;
这个类后面会详细说,也是非常重要的分类model。这里我们就是简单获取 这个类型下的所有分类,显示在侧边栏,我已经完成了。有图有真相!
PHPもどきブログパーク・個人ブログ(2)_PHPチュートリアル



 

这样 我们的 $results 数组中就储存了我们页面所需的所有数据。 好的,来看看我们的模版,是怎么输出的。
 
  View Code
 
  1
  2
  3    


  4         <br>   5             博客后台管理
  6            
  7                       
  8        
  9    
 10            
 11                
 12                    
 20                
 21                
 22                    
 25                    
 37                
 38                
 39                    
 65                    
141                
142            

 23                        
操作

 24                    

 66                        

 67                

 68                
 69                  70                     if( isset( $results['statusMessage'] )){echo  $results['statusMessage'];}
 71                     if( isset( $results['errorMessage'] )){echo  $results['errorMessage'];}
 72                 ?>
 73                

 74

 75    

 76         文章(主要用于转载,发布原创博文要通过“随笔”)
 77    

 78
    
 79  80 if( isset( $results['posts'] )){
 81 エコー  82
 83
 84
 87
 91
 94              
 98
101
104
105
106EOB;
107 foreach( $results['posts'] as $post ){
108 $time = date("Y-m-d H:i:s", $post['create_time']);
109 if( $post['status'] == "1" ){
110                 $post['status']  = "发布";
111             }    else {
112                 $post['status']  = "未发布";
113             }
114             echo 115            
116                
117                
118                
119                
120                
121                    
122            
123 EOB;
124         }
125             echo "

 85 标题
 86

 88 公開
 89 状態态
 90

 92 评论
 93

 95 页面

 96 浏览
 97

 99 操作
100

102 操作
103
{$post['title']} ({$time}) {$post['status']} {$post['view_count']} {$post['comment_count']} 编辑 删除
";               
126             if( isset( $pagination) ){$pagination->createLinks( ) ;}
127     } else {
128         echo "当前无内容!";
129     }
130
131 ?>  
132
133    

134

135
136
137
138
139                        

140                    

143            

144                
146                
         
147                    logout
148                

149                

150            

151            
152                
153                    
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート