PHP ASP.NET Views from Master eşdeğer nedir?

3 Cevap php

Ben ASP.NET / ASP.NET MVC çalışmaya alışkınım ve artık sınıf için bir PHP web sitesi yapmak zorunda.

PHP dünyada ASP.NET Views from Master eşdeğer nedir?

İdeal gibi bir şey ile bir sayfa düzeni tanımlamak mümkün olmak istiyorum:

Master.php

<html>
    <head>
        <title>My WebSite</title>
        <?php headcontent?>
    </head>
    <body>
        <?php bodycontent?>
    </body>
</html>

ve sonra benim diğer PHP sayfaları Master miras var, bu yüzden bu önceden tanımlanmış yerlere ekleyebilirsiniz.

Bu PHP mümkün mü?

Şu anda benim sayfanın üst yarısı "HEADER.html" olarak tanımlanan ve alt yarısında "footer.html" dir var ve ben oluşturmak her sayfada ikisi include_onceyi. Ancak, bu tür kafa içine içerik eklemek için edememek gibi benim ana sayfada birden fazla yerde eklemek mümkün istediğiniz zaman için ideal değildir.

PHP yetenekli birisi bana doğru yönde işaret edebilir?

3 Cevap

You can use Smarty or develop your own template engine. Basically you can define a simple layout like this:

layout.tpl:

<html>
    <head>
        <title>My WebSite</title>
        {$header}
    </head>
    <body>
        {$bodycontent}
    </body>
</html>

senin başlığını tanımlamak:

header.tpl

<script type="text/javascript" src="js/myjs.js"></script>

ve içerik dosyası:

home.tpl

<div>hello {$var}! </div>

Ve nihayet denetleyicisi:

index.php

<?php
$header = new Smarty();
$headerOutput = $header->fetch('header.tpl');

$content = new Smarty();
$content->assign('var', 'world');
$contentOutput = $content->fetch('home.tpl');

$layout = new Smarty();
$layout->display('header', $headerOutput);
$layout->display('bodycontent', $contentOutput);
$layout->display('layout.tpl');

?>

PHP programlama dili değil, bir çerçeve olduğundan, kutunun dışında bu özelliğe sahip değildir.

Bu sorunun birçok çözümü vardır, muhtemelen en karmaşık biri aslında bir çerçeve kullanmak olacaktır. many PHP frameworks seçmek için vardır. Olumsuz bir çerçeve değil, PHP öğrenme olurdu olurdu.

Daha basit bir çözüm, Templating engine kullanmaktır. PHP daha yakın olurdu ama hala bu tür motor kullanmayı öğrenmek olurdu.

Bir ana dosyadan dosyaları dahil: Ve zaten basit çözüm kullanıyorsunuz. Ayrıca idam ve statik html sadece almak için gidiyor PHP dosyalarını içerebilir.

Bir şablonu motor kullanmak istemiyorsanız, tek çözüm bu gibi olabilir:

<html>
    <head>
        <title>My WebSite</title>
        <?php include('headcontent'); ?>
    </head>
    <body>
        <?php include('bodycontent'); ?>
    </body>
</html>

Ve in bodycontent,

<?php
switch ($_GET['page'];
    case 1:
        include('page1');
        break;
    case 2:
        include('page2');
        break;
}
?>

bodycontent çok basit bir denetleyicisi gibi olacak.