Maison > php教程 > PHP开发 > Tutoriel d'introduction au framework PHP haute performance Symfony2 Classic

Tutoriel d'introduction au framework PHP haute performance Symfony2 Classic

高洛峰
Libérer: 2016-12-26 11:27:07
original
1577 Les gens l'ont consulté

Symfony2 est un framework de développement Web basé sur le langage PHP, qui présente les caractéristiques d'une vitesse de développement rapide et de hautes performances. Cet article décrit en détail la configuration et le développement du programme du framework Symfony2 à travers le processus d'implémentation d'un exemple de programme.

Je prends le système Ubuntu comme exemple, en utilisant le package de compression .tgz, décompressez le fichier source dans le répertoire /var/www et exécutez :

tar zxvf Symfony_Standard_Vendors_2.0.###.tgz -C /var/www
Copier après la connexion

Le ci-dessus ### fait référence au numéro de version Lorsque je l'ai téléchargé, il s'agissait de BETA5.

Après décompression, le répertoire de Symfony2 est le suivant :

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

Si vous devez l'installer (si vous avez téléchargé le sans version fournisseur) Ou lors de la mise à jour du contenu du fournisseur (tiers), vous pouvez utiliser :

cd /var/www/Symfony
php bin/vendors install
Copier après la connexion

2. Configuration

La configuration de Symfony2 est très simple, il vous suffit de saisir dans le navigateur :

http://localhost/Symfony/web/config.php
Copier après la connexion

puis de suivre les instructions. Ce qui est à noter, c'est le problème d'autorisation des répertoires app/cache et app/logs Depuis que je l'ai installé sous Ubuntu, je peux l'utiliser (firehare est mon nom d'utilisateur, vous pouvez le remplacer par votre nom d'utilisateur ici) :

#为了保险起见
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
Copier après la connexion

Si le système ne prend pas en charge la commande setfacl, il y a deux endroits pour vérifier :
Si setfacl a été installé, sinon, vous pouvez utilisez l'installation de la commande suivante (elle semble être installée par défaut dans Ubuntu 11.10, le package s'appelle acl) :

sudo apt-get install setfacl
Copier après la connexion

Si setfacl a été installé , veuillez vérifier le fichier /etc/fstab pour voir si l'option acl a été ajoutée :

# /var was on /dev/sda7 during installation
UUID=c2cc4104-b421-479a-b21a-1108f8895110 /var ext4 defaults,acl 0 2
Copier après la connexion

Remplissez ensuite le nom de la base de données et d'autres informations selon la page vous invite, puis copiez les informations. Accédez au fichier /var/www/Symfony/app/config/parameters.ini comme suit :

; 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"
Copier après la connexion


Si tout va bien, lorsque vous saisirez l'adresse suivante dans votre navigateur, vous obtiendrez une page de démonstration :

http://localhost/Symfony/web/app_dev.php
Copier après la connexion

3. Programme exemple :

1. Créer un bundle :

Créez d'abord un 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;
}
Copier après la connexion

2. Créer un itinéraire

Le routage peut être créé dans app/config/routing.yml, mais afin d'avoir de bonnes habitudes de programmation et une bonne organisation du code, vous pouvez le placer dans Resources/config/routing.yml dans le répertoire Bundle créé, et dans app/config/routing. Seule la référence au fichier de routage est conservée dans le yml, comme indiqué ci-dessous :

# app/config/routing.yml
homepage:
 pattern: /
 defaults: { _controller: FrameworkBundle:Default:index }
hello:
 resource: "@AcmeHelloBundle/Resources/config/routing.yml"
Copier après la connexion

La vraie route est écrite en src/Acme/HelloBundle/Resources /config/routing.yml fichier de routage, comme suit :

# src/Acme/HelloBundle/Resources/config/routing.yml
hello:
 pattern: /hello/{name}
 defaults: { _controller: AcmeHelloBundle:Hello:index, name:&#39;pu&#39; }
Copier après la connexion

3. Créez un contrôleur :

Contrôleur Le nom doit être HelloController.php. La raison est très simple, car votre routage a déjà donné le nom du contrôleur. Les contrôleurs des lignes 4 et 7 du fichier de routage ci-dessus commencent tous les deux par AcmeHelloBundle:Hello. AcmeHelloBundle représente le nom du Bundle et Hello représente le nom du contrôleur, le contrôleur doit donc être HelloController.php et l'extension du nom du contrôleur est la convention de dénomination. Quant à l'index et au disons suivants, ce sont des méthodes de la classe contrôleur. La méthode d'index est définie ci-dessous. Bien entendu, le nom de la méthode indexAction est également une convention de dénomination :

// 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;);
 }
}
Copier après la connexion

De cette façon, lorsque nous entrons <🎜. > dans le navigateur

http://localhost/hello/index/World
Copier après la connexion

affichera les mots Hello World !.

4. Créez un modèle :

Afin de réutiliser les blocs dans le fichier de mise en page, vous pouvez utiliser des modèles pour remplacer les instructions HTML dans le contrôleur. Créez d'abord un fichier de mise en page :

{# 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>
Copier après la connexion

Notez que ce fichier se trouve dans le répertoire app/Resources/views/ et que sa portée est le modèle global pour l'ensemble du dossier de candidature. Deux blocs sont définis dans ce fichier : titre et corps. L'étape suivante consiste à créer un modèle spécifiquement pour le contrôleur Hello, comme indiqué ci-dessous :

   
{# src/Acme/HelloBundle/Resources/views/Hello/index.html.twig #}
{% extends &#39;::layout.html.twig&#39; %}
{% block body %}
 Hello {{ name }}!
{% endblock %}
Copier après la connexion

Dans ce fichier, il hérite du modèle global, et Le corps du bloc est défini, ce qui remplace le bloc corps dans le modèle global. Si le système restitue ce modèle, il écrasera le corps de bloc du modèle global par le corps de bloc, puis le restituera.

Enfin, modifiez l'instruction HTML dans le contrôleur pour afficher le modèle ci-dessus :

// 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));
 }
}
Copier après la connexion

Framework PHP plus hautes performances Introduction classique Symfony2 Pour le tutoriel -articles liés, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal