Heim > php教程 > PHP开发 > Hochleistungs-PHP-Framework Symfony2 Classic Einführungs-Tutorial

Hochleistungs-PHP-Framework Symfony2 Classic Einführungs-Tutorial

高洛峰
Freigeben: 2016-12-26 11:27:07
Original
1576 Leute haben es durchsucht

Symfony2 ist ein Webentwicklungs-Framework, das auf der PHP-Sprache basiert und sich durch schnelle Entwicklungsgeschwindigkeit und hohe Leistung auszeichnet. In diesem Artikel wird die Konfiguration und Programmentwicklung des Symfony2-Frameworks anhand des Implementierungsprozesses eines Programmbeispiels ausführlich beschrieben.

Ich nehme das Ubuntu-System als Beispiel, verwende das .tgz-Komprimierungspaket, dekomprimiere die Quelldatei in das Verzeichnis /var/www und führe Folgendes aus:

tar zxvf Symfony_Standard_Vendors_2.0.###.tgz -C /var/www
Nach dem Login kopieren

The Das obige ### bezieht sich auf die Versionsnummer. Als ich es heruntergeladen habe, war es BETA5.

Nach dem Entpacken lautet das Verzeichnis von Symfony2 wie folgt:

/var/www/ <- Web根目录
 Symfony/ <- Symfony2解压目录
  app/ <- 存放symfony的核心文件的目录
   cache/ <- 存放缓存文件的目录
   config/ <- 存放应用程序全局配置的目录
   logs/ <- 存放日志的目录
  src/ <- 应用程序源代码
   ...
  vendor/ <- 供应商或第三方的模组和插件
   ...
  web/ <- Web入口
   app.php <- 生产环境下的前端控制器
   ...
Nach dem Login kopieren

Wenn Sie es installieren müssen (wenn Sie es ohne heruntergeladen haben). Herstellerversion) Oder wenn Sie Inhalte von Anbietern (Drittanbietern) aktualisieren, können Sie Folgendes verwenden:

cd /var/www/Symfony
php bin/vendors install
Nach dem Login kopieren

2. Konfiguration

Die Konfiguration Die Installation von Symfony2 ist sehr einfach. Sie müssen lediglich Folgendes in den Browser eingeben:

http://localhost/Symfony/web/config.php
Nach dem Login kopieren

und dann den Anweisungen folgen. Bemerkenswert ist das Berechtigungsproblem der Verzeichnisse app/cache und app/logs. Da ich es unter Ubuntu installiert habe, kann ich es verwenden (Firehare ist mein Benutzername, Sie können ihn hier durch Ihren Benutzernamen ersetzen):

#为了保险起见
rm -rf app/cache/*
rm -rf app/logs/*
#设置ACL
sudo setfacl -R -m u:www-data:rwx -m u:firehare:rwx app/cache app/logs
sudo setfacl -dR -m u:www-data:rwx -m u:firehare:rwx app/cache app/logs
Nach dem Login kopieren

Wenn das System den Befehl setfacl nicht unterstützt, gibt es zwei Stellen zur Überprüfung:
Ob setfacl installiert wurde, falls nicht, können Sie dies tun Verwenden Sie die folgende Befehlsinstallation (sie scheint standardmäßig in Ubuntu 11.10 installiert zu sein, das Paket heißt acl):

sudo apt-get install setfacl
Nach dem Login kopieren

Wenn setfacl installiert wurde , überprüfen Sie bitte die Datei /etc/fstab, um zu sehen, ob die ACL-Option hinzugefügt wurde:

# /var was on /dev/sda7 during installation
UUID=c2cc4104-b421-479a-b21a-1108f8895110 /var ext4 defaults,acl 0 2
Nach dem Login kopieren

Geben Sie dann den Datenbanknamen und andere Informationen entsprechend ein Sie werden auf der Seite aufgefordert, die Informationen zu kopieren. Gehen Sie wie folgt zur Datei /var/www/Symfony/app/config/parameters.ini:

; These parameters can be imported into other config files
; by enclosing the key with % (like %database_user%)
; Comments start with &#39;;&#39;, as in php.ini
[parameters]
 database_driver="pdo_mysql"
 database_host="localhost"
 database_name="symfony"
 database_user="symfony"
 database_password="symfony"
 mailer_transport="smtp"
 mailer_host="localhost"
 mailer_user=""
 mailer_password=""
 locale="zh_CN"
 secret="29f96e9e70c2797cb77dd088d3954d3c38d9b33f"
Nach dem Login kopieren


Wenn alles in Ordnung ist, erhalten Sie bei Eingabe der folgenden Adresse in Ihrem Browser eine Demoseite:

http://localhost/Symfony/web/app_dev.php
Nach dem Login kopieren

3. Programmieren Beispiel:

1. Bundle erstellen:

Erstellen Sie zunächst ein Bundle:

php app/console gen:bundle "AcmeHelloBundle" src
  为了确保Acme名称空间可以被自动加载,请在你的app/autoload.php文件添加下列语句:
$loader->registerNamespaces(array(
 // ...
 //添加自定义的名称空间
 &#39;Acme&#39; => __DIR__.&#39;/../src&#39;,
 // ...
));
  最后是将该Bundle注册到Symfony2中,请在你的app/AppKernel.php文件中添加下列语句:
// app/AppKernel.php
public function registerBundles()
{
 $bundles = array(
  // ...
  new AcmeHelloBundleAcmeHelloBundle(),
 );
  
 // ...
  
 return $bundles;
}
Nach dem Login kopieren

2. Route erstellen

Routing kann in app/config/routing.yml erstellt werden, aber um gute Programmiergewohnheiten und Codeorganisation zu haben, können Sie es in Resources/config/routing.yml im erstellten Bundle-Verzeichnis ablegen app/config/routing. Nur der Verweis auf die Routing-Datei bleibt im YML erhalten, wie unten gezeigt:

# app/config/routing.yml
homepage:
 pattern: /
 defaults: { _controller: FrameworkBundle:Default:index }
hello:
 resource: "@AcmeHelloBundle/Resources/config/routing.yml"
Nach dem Login kopieren

Die tatsächliche Route wird eingeschrieben src/Acme/HelloBundle/Resources /config/routing.yml Routing-Datei, wie folgt:

# src/Acme/HelloBundle/Resources/config/routing.yml
hello:
 pattern: /hello/{name}
 defaults: { _controller: AcmeHelloBundle:Hello:index, name:&#39;pu&#39; }
Nach dem Login kopieren

3. Erstellen Sie einen Controller:

Controller Der Name muss HelloController.php sein, da Ihr Routing bereits den Namen des Controllers in den Zeilen 4 und 7 der Routing-Datei oben angegeben hat AcmeHelloBundle stellt den Bundle-Namen und Hello den Controller-Namen dar, daher muss der Controller HelloController.php sein und die Controller-Namenserweiterung ist die Namenskonvention. Was den nachfolgenden Index betrifft, handelt es sich beispielsweise um Methoden in der Controller-Klasse. Die Indexmethode ist unten definiert. Natürlich ist der Methodenname indexAction auch eine Namenskonvention:

// src/Acme/HelloBundle/Controller/HelloController.php
namespace AcmeHelloBundleController;
use SymfonyComponentHttpFoundationResponse;
class HelloController
{
 public function indexAction($name)
 {
  return new Response(&#39;<html><body>Hello &#39;.$name.&#39;!</body></html>&#39;);
 }
}
Nach dem Login kopieren

Auf diese Weise geben wir <🎜 ein > im Browser

http://localhost/hello/index/World
Nach dem Login kopieren

werden die Worte Hello World! angezeigt.

4. Erstellen Sie eine Vorlage:

Um Blöcke in der Layoutdatei wiederzuverwenden, können Sie Vorlagen verwenden, um HTML-Anweisungen im Controller zu ersetzen. Erstellen Sie zunächst eine Seitenlayoutdatei:

{# app/Resources/views/layout.html.twig #}
<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>{% block title %}Hello Application{% endblock %}</title>
 </head>
 <body>
  {% block body %}{% endblock %}
 </body>
</html>
Nach dem Login kopieren

Beachten Sie, dass sich diese Datei im Verzeichnis app/Resources/views/ befindet und ihr Geltungsbereich die globale Vorlage ist für die gesamte Bewerbung. In dieser Datei sind zwei Blöcke definiert: Titel und Text. Der nächste Schritt besteht darin, eine Vorlage speziell für den Hello-Controller zu erstellen, wie unten gezeigt:

   
{# src/Acme/HelloBundle/Resources/views/Hello/index.html.twig #}
{% extends &#39;::layout.html.twig&#39; %}
{% block body %}
 Hello {{ name }}!
{% endblock %}
Nach dem Login kopieren

In dieser Datei erbt es die globale Vorlage und Der Blockkörper wird definiert, der den Körperblock in der globalen Vorlage überschreibt. Wenn das System diese Vorlage rendert, überschreibt es den Blockkörper der globalen Vorlage mit dem Blockkörper und rendert ihn dann.

Ändern Sie abschließend die HTML-Anweisung im Controller, um die obige Vorlage zu rendern:

// src/Acme/HelloBundle/Controller/HelloController.php
namespace AcmeHelloBundleController;
use SymfonyBundleFrameworkBundleControllerController;
class HelloController extends Controller
{
 public function indexAction($name)
 {
  return $this->render(&#39;AcmeHelloBundle:Hello:index.html.twig&#39;, array(&#39;name&#39; => $name));
 }
}
Nach dem Login kopieren

Mehr Hochleistungs-PHP-Framework Symfony2 Classic Einführung Für Tutorial -bezogene Artikel, achten Sie bitte auf die chinesische PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage