Heim >Backend-Entwicklung >PHP-Tutorial >Upgrade von Sylius The TDD Way: Erforschung von PHPSPEC

Upgrade von Sylius The TDD Way: Erforschung von PHPSPEC

Christopher Nolan
Christopher NolanOriginal
2025-02-10 11:13:13560Durchsuche

Dieser Artikel zeigt, wie die Kernfunktionalität von Sylius mithilfe der Test-gesteuerten Entwicklung (TDD) erweitert wird, um das Inventarmanagement zu verbessern. Wir werden der Produktliste farblich codierte Low-Standard-Indikatoren hinzufügen. Dies wird eine Backend -Implementierung sein. Visuelle Tests mit Behat werden in einem zukünftigen Artikel behandelt. Angenommen, Sie haben eine funktionierende Sylius -Instanz.

Upgrading Sylius the TDD Way: Exploring PhpSpec

Sylius bietet ein robustes Bestandsverwaltung, aber wir können es verbessern. Derzeit fehlen der Admin -Produktliste Aktieninformationen. Während die Variantendetails die Bestandsstufen und das Tracking zeigen, verbessert das Hinzufügen dieser zur Produktliste die Benutzerfreundlichkeit. Wir werden auch ein abgestuftes Warnsystem einführen (z. B. grün für reichlich Bestand, gelb für niedrige Bestände, rot für außer Lager).

Erweiterung ProductVariant und Product Modelle

Um Informationen zur Verfügbarkeit von Aktien hinzuzufügen, erweitern wir die Modelle von Sylius ProductVariant und Product.

1. Erstellen Sie ein Bundle

erstellen src/AppBundle/AppBundle.php:

<code class="language-php"><?php
namespace AppBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AppBundle extends Bundle
{
}</code>

Registrieren Sie es in app/AppKernel.php:

<code class="language-php"><?php
// ...
public function registerBundles()
{
    $bundles = [
        // ...
        new AppBundle\AppBundle(),
    ];
}</code>

update composer.json 's autoload Abschnitt:

<code class="language-json">{
  // ...
  "autoload": {
    "psr-4": {
      // ...
      "AppBundle\": "src/AppBundle"
    }
  }
  // ...
}</code>

run composer dump-autoload.

2. SpecBDD -Tests

Wir werden PHPSPEC für die verhaltensgetriebene Entwicklung verwenden. In phpspec.yml.dist hinzufügen:

<code class="language-yaml">AppBundle: { namespace: AppBundle\Entity, psr4_prefix: AppBundle\Entity, spec_path: src/AppBundle/Entity, src_path: src/AppBundle/Entity }</code>

Löschen Sie den Cache: php bin/console cache:clear.

Spezifikationen generieren mit:

<code class="language-bash">php bin/phpspec desc AppBundle/Entity/ProductVariant
php bin/phpspec desc AppBundle/Entity/Product</code>

Schnittstellen erstellen: ProductInterface und ProductVariantInterface ihre Sylius -Gegenstücke erweitern. Erstellen Sie dann Product.php und ProductVariant.php die Sylius -Klassen und implementieren Sie die neuen Schnittstellen.

Fügen Sie eine $reorderLevel -Meigenschaft zu ProductVariant.php:

hinzu
<code class="language-php"><?php
// src/AppBundle/Entity/ProductVariant.php
// ...
class ProductVariant extends BaseProductVariant implements ProductVariantInterface
{
    const REORDER_LEVEL = 5;
    private $reorderLevel;
    // ...
}</code>

3. Übergeordnete Sylius -Klassen

Sylius konfigurieren, um unsere erweiterten Klassen in app/config/config.yml:

zu verwenden
<code class="language-yaml">sylius_product:
    resources:
        product:
            classes:
                model: AppBundle\Entity\Product
        product_variant:
            classes:
                model: AppBundle\Entity\ProductVariant</code>

4. Datenbankaktualisierung

Migrationen erzeugen und ausführen:

<code class="language-bash">php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate</code>

(oder bei Bedarf php bin/console doctrine:schema:update --force verwenden). Erstellen Sie ProductVariant.orm.yml, um die Spalte reorderLevel in der Datenbank zu definieren. Erstellen Sie ein leeres Product.orm.yml, da wir die Tabelle sylius_product nicht ändern.

5. Weitere Spekbdd -Tests

PHPSPEC -Tests für ProductVariant und Product schreiben, wobei Methoden wie getReorderLevel(), setReorderLevel(), isReorderable(), getOnHand() und isTracked() nach Bedarf implementiert werden, um sicherzustellen, dass alle Tests bestehen. Die Tests sollten verschiedene Szenarien abdecken, einschließlich unterschiedlicher Aktienniveaus und Nachbestellniveaus. Denken Sie daran, die Schnittstellen mit den erforderlichen Methoden zu aktualisieren.

6. Schlussfolgerung

Dieser TDD -Ansatz sorgt für einen robusten Code. Der nächste Artikel behandelt Behat -Tests zur visuellen Überprüfung.

Upgrading Sylius the TDD Way: Exploring PhpSpec

Upgrading Sylius the TDD Way: Exploring PhpSpec

Upgrading Sylius the TDD Way: Exploring PhpSpec

(FAQS-Abschnitt für Kürze ausgelassen, da er weitgehend nicht mit dem Kerncode-Beispiel zu tun hat und die Antwortlänge erheblich erhöht. Die bereitgestellten FAQs sind gut geschrieben und können leicht eingeschlossen werden.)

Das obige ist der detaillierte Inhalt vonUpgrade von Sylius The TDD Way: Erforschung von PHPSPEC. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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