PHP sınıfı Page nesil

6 Cevap php

Ben aslında eğlenmek için web sitesi oluşturma ve benim bazı arkadaşlarım ben tüm sayfayı temsil edecek bir php sınıfı ile sayfanın çıktısını oluşturmak eğer ben daha verimli olabileceğini söyledi.

Ben insanların bunu nasıl yapacağını merak ediyordum.

Teşekkürler

6 Cevap

Ben daha yetenekli iseniz bu tür yeni başlayanlar için iyidir Cake, ya Symfony veya Zend Framework gibi bazı PHP çerçeveler içine bakarak öneririm. Bu PHP geliştirme çok düzene olacaktır.

Ben bir OO programcı değilim .. ama kavramının bir kanıtı olarak, ve soru başına, sen / böyle bir şey denemek yapabilirsiniz.

class Page {
    public $meta_title;
    public $meta_keywords;
    public $html_body;

    public function displayPage() {
    	$page ='
    	<html>
    	<head>
    		<title>'.$this->meta_title.'</title>
    		<meta name="keywords" content="'.$this->meta_keywords.'" />
    	</head>
    	<body>
    		'.$this->html_body.'
    	</body>
    	</html>
';
    	echo $page;
    }
}

Sonra tıpkı Sayfaya sınıf kullanmak ..

$page = new Page();
$page->meta_title ="Hello world!";
$page->meta_keywords = "some text keywords";
$page->body = '<h1>Contact Us </h1>
<p>you can contact us at blah ... blah .. etc.</p>
<address>Dummy Address </address>
';

$page->displayPage();

Bunu içine o kadar çok şey ekleyebilirsiniz unutmayın böyle .. sınıf değişkenleri stil tanımlamak için (tip dizi), javascript'leri dosyaları .. sonra tek tek sayfaları için dinamik bu dosyaları tanımlamak için üzerinde sadece döngü.

Bu sol, sağ ya da üst gezinti çubuğu karşılamak böylece ekran sayfası işlevini değiştirebilir. Sonra da $ show_right_bar, sayfaların hangi tarafı gezinme çubuğunu görüntülemek kontrolü için hangi $ show_left_bar gibi değişkenleri olabilir. Böylece değişiklik ve şartları ne olursa olsun uzatabilirsiniz.

Alternatif olarak, çok daha fazla evrimleşmiş çözümler bazı php çerçeveler, deneyebilirsiniz, ama bu gerçekten programlama becerileri ve gereksinimlerine bağlıdır.

Umarım bu yardımcı olur.

What you could do is have all the tags in the page stored as a multi-dimensional array. PHP is mushy enough to do this. As such, every tag would be stored in an element of the array. Then, you can use control statements to print different parts of the page at different times depending on certain conditions. It would kinda look like what you get when you convert an XML file to an array. Here's what I'm thinking.

$page['html']['title'] = "Page's Title";
$page['body']['p'][1] = "1st Paragraph";
$page['body']['p'][2] = "2nd Paragraph";

Ve sonra HTML alanlar olarak bu yazdırmak için kendi işlevlerini kullanabilirsiniz.

Ben MVC kullanarak bazı öneririm (Model View Controller) KohanaPHP gibi orada çerçeveler. Bu aslında bu. Sen kesinlikle Nesne yönelimli bir ortamda çalışıyoruz. Kohana basit bir sayfa, bir sınıf tamamen inşa şöyle olacaktır:

class Home_Controller extends Controller
{
  public function index()
  {
    echo "Hello World";
  }
}

Daha sonra youur url, sınıf adı ve yöntem adı ziyaret ederek bu sayfayı erişmek olacaktır:

http://www.mysite.com/home/ (index() can be called after home/, but it's implicit)

Eğer veritabanı aktivite getirmek isteyen başladığınızda, bir Model adlı başka bir Class ile çalışmaya başlayacağız. Bu, aşağıdaki gibi, veritabanı ile etkileşim yöntemlerini içerecektir:

class Users_Model extends Model
{
  public function count_users()
  {
    return $this->db->count_records('users');
  }
}

Ben kendi sorgu yazmadım burada unutmayın. Kohana sezgisel Query Builder ile birlikte gelir.

Bu yöntemi biz bu çözümün başında bahsedilen birinci sınıf, sizin Controller içinde olacağını söyledi. İşte bu gibi görünecektir:

class Home_Controller extends Controller
{
  public function index()
  {
    $usersModel = new Users_Model;
    $userCount = $usersModel->count_users();

    echo "We have " . $userCount . " users!";
  }
}

Sonunda, HTML / CSS / Javascript içerecektir daha karmaşık düzenleri, isteyeceksiniz. Bu noktada, "Views," sadece sunum katmanları hangi tanıtmak istiyorum. Aksine echo veya print Kontrol içinde aradığınız yerine, (aslında, bir HTML sayfası) bir görünüm kadar yük ve bazı değişkenleri geçerdi:

class Home_Controller extends Controller
{
  public function index()
  {
    $myView = new View("index");
    $usersModel = new Users_Model;
    $userCount = $usersModel->count_users();

    $myView->userCount = $userCount;
    $myView->render(TRUE);
  }
}

Aşağıdaki "View" yüklemek hangi

<p>We have <?php print $userCount; ?> users!</p>

Bu başlamak için yeterli olmalıdır. MVC-stili kullanarak, gerçekten temiz ve çalışmak çok eğlenceli.

Gerçekten, bunu yapmak için pek çok yol.

Ben basit bir kişisel site yaptığınızda, ben genellikle üstünde bir afiş ve bir tarafta bir menü var. Her şeyi copy'n'paste zorunda kendimi önlemek için, benim index.php bir get değişkeni denetler ve buna göre değişken yükler ortasında uygun içerik olsun. Örnek arada, index.php. Benim menü aslında bir fonksiyonu ile içeriği yükler, ancak bu gerekli / önerilen değil:

<?php

$page = strtolower($_GET['page']);
if(!isset($page) || $page === '')
{
    $page="home";
}

switch($page)
{
    case "loomis":
    	require_once("loomis.php");
    	break;
    case "home":
    default:
    	$page = "home";
    	require_once("home.php");
    	break;
}

include "menu.php";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Nebulous - <?php getTitle($page) ?></TITLE>
<link href="style.css" rel="stylesheet" type="text/css" />
</HEAD>

<body>
<?php displayMenu() ?>
</body>
</html>

Sınıflar gerçekten sayfaları işlemek için, veri veya işlev temsili olarak gerçekten sadece kullanışlı değildir.

Eğer sayfaları boyunca statik bir şey varsa cepten sayfa render yararlı olabilir. (Örneğin Üstbilgi, Altbilgi)

$index = new Page();
$index->displayHeader();
// php/html per needs
$index->displayFooter();

Bu, tüm bu sezgisel değil ama diğerleri dediği gibi, olasılıklar sınırsız. Ben konuyla ilgili bir kitap alıp öneririm.