止まる
以前にオブジェクト指向プログラミングで作業したことがありますか?
OOモデリング手法を使用しましたか?
PHPファイルに名前空間または関数プレフィックス( "(" mylib.php "、" function mylib_dosomething(){...} ")")を使用していますか?
とても速くUMLにジャンプしないでください。UMLは、頭の中にあるもののドキュメントを作成することです。
最初に、Webサイトで何をするのかを考え、後で、新しいWebサイトがどのように機能するかを文書化してモデル化する必要があります。
UMLは素晴らしいツールですが、頭の中にあるデザインが混乱していると、ドキュメントが混乱することになります。
動作しているWebサイトがあり、それを置き換えたいと考えています。主な方法は2つあります。
(1)最初から始める:
OOの経験があり、古いサイトを忘れて機能し続け、OOまたはこのための既存のフレームワークのいくつかを使用して「スクラッチ」から新しいWebサイトを開始できる場合。
(2)リファクタリング
または、現在のWebサイトを維持し、段階的にOOに移行する必要があります。?「リファクタリング」としても知られています。
メインプログラムまたはメインphpファイルは大きなオブジェクト(プログラム)ファイルであり、各ライブラリファイルもオブジェクトであると考えることから始めることができます。
例:
あなたがいくつかのphpファイルを持っていると仮定しましょう。一部のファイルは、ページのメインファイルです。一部のファイルはページファイルに含まれ、繰り返されます。その他は、機能のみを備えた「ライブラリ」ファイルです。
<?php
// "indexfuncs1.php"
// this is an auxiliary file for "index.php",
// and has some free procedural code.
echo "indexfuncs1.php: dosomething()";
?>
<?php
// "funcslib.php"
// this is an library file,
// and has only functions and constants,
define ("ANYCONST", "Hello World");
function HelloWorld()
{
echo ANYCONST;
}
?>
<?php
// "index.php"
// only declarations, doesn't do anything, by itself
//include("funcslib.php");
//require("funcslib.php");
//require_once("funcslib.php");
include_once("funcslib.php");
// this code is in other file, and its executed
include("indexfuncs1.php");
echo "index.php: Hello World";
HelloWorld();
// this code is in other file, and its executed
include("indexfuncs1.php");
?>
そして、それらをこれに変え始めます:
<?php
// "indexfuncs1.php"
// this is an auxiliary file for "index.php",
// and has some free procedural code.
function indexfuncs1_dosomething()
{
echo "indexfuncs1.php: dosomething()";
}
?>
<?php
// "funcslib.php"
// this is an library file,
// and has only functions and constants,
define ("funcslib_ANYCONST", "Hello World");
function funcslib_HelloWorld()
{
echo funcslib_ANYCONST;
}
?>
<?php
// "index.php"
// only declarations, doesn't do anything, by itself
//include("funcslib.php");
//require("funcslib.php");
//require_once("funcslib.php");
include_once("funcslib.php");
function index_main()
{
// this code is in other file, and its executed
indexfuncs1_dosomething();
echo "index.php: Hello World";
funcslib_HelloWorld();
// this code is in other file, and its executed
indexfuncs1_dosomething();
}
?>
そして、まだOOはありません。なぜなら、その中間ステップだからです。
Lets start by transform each web page into a single class, without inheritance, without parent classes.
<?php
// "indexfuncs1.php"
// this is an auxiliary file for "index.php",
// and the free procedural code have become a class.
class indexfuncs1 {
function dosomething()
{
echo "indexfuncs1.php: dosomething()";
} // function dosomething()
} // class IndexPage
?>
<?php
// "index.php"
// only declarations, doesn't do anything, by itself
//include("funcslib.php");
//require("funcslib.php");
//require_once("funcslib.php");
include_once("funcslib.php");
class IndexPage {
function main()
{
$myAux = new indexfuncs1();
// this code is in other file, and its executed
$myAux->dosomething();
echo "index.php: Hello World";
funcslib_HelloWorld();
// this code is in other file, and its executed
$myAux->dosomething();
} // function main()
} // class IndexPage
function index_main()
{
$myPage = new IndexPage();
$myPage->main();
} // function index_main(...)
// --> the only allowed global procedural code:
index_main();
?>
(もっと来る)。