Könnte mir bitte einer diesen Code übersetzen, was er genau macht und was da genau geschieht Zeile für Zeile wäre sehr nett :)

public function load( $oxid )
{
parent::load( $oxid );
$sSelect = “SELECT * FROM oxarticles WHERE (”;
foreach( $aArtIDs as $sArtID )
{
$sSelect .= " OXID = ‘$sArtID’ OR";
}
$sSelect = rtrim( $sSelect, “OR” );
$sSelect .= “)”;

    /** @var ArticleList $oList */
    $oList = oxNew( ArticleList::class );
    $oList->selectString( $sSelect );
    $aArticles = array();

    /** @var Article $oProduct */
    foreach( $oList as $oProduct )
    {
        $aArticles[] = array(
            'id'          => $oProduct->getId(),
            'title'       => $oProduct->oxarticles__oxtitle->value,
            'artnum'      => $oProduct->oxarticles__oxartnum->value,
            'ean'         => $oProduct->oxarticles__oxean->value,
            'icon'        => $oProduct->getIconUrl(),
            'description' => 'Art-Nr.: ' . $oProduct->oxarticles__oxartnum->value . ( $oProduct->oxarticles__oxean->value ? ' / EAN: ' . $oProduct->oxarticles__oxean->value : '' ),
        );
    }
}

Woher kommt das und hast Du schon bei dd (DigiDisk) nachgefragt?

nein ist nur von mir und einem kollegen selbst erstellt worden

Hmmm. Du hast es erstellt und weißt nicht, was es macht?
Also das dürfte nen Fehler ausgeben, denn foreach ($aArtIDs …) gibt’s nicht. Ansonsten dürfte es auch nicht viel machen, wenn am Ende, also vor der letzten geschlossenen Klammer nicht noch ein return $aArticles; kommt.

1 Like

Nach welchem Kriterium soll den eine Artikelliste zurück geben werden? Oder soll nur ein einzelner Artikel zurückgegeben werden?

Worauf soll dieser Code abzielen?

/** @var ArticleList $oList */

Dies ein Kommentar.

$oList = oxNew( ArticleList::class );

oxNew() ist eine OXID eShop Framework Methode um Klassen zu instanziieren. Der Gedanke hinter oxNew() ist, dass die Überladungskette eingehalten werden kann, heißt mehrere Module können eine Klasse erweitern.

Es wird ein ArticleList Klasse Objekt instanziiert und an die Variable $oList übergeben.

$oList->selectString( $sSelect );

Das instanziierte Objekt welches nun in der Variablen $oList steckt ruft die Klassen Methode selectString() auf mit dem Parameter $sSelect.

Der Name der Methode lässt darauf hinweisen, dass man die Abfrage die an die Datenbank weitergegeben wird mit dem Parameter beeinflussen kann, der Name des Parameters deutet daraufhin, dass dies das komplette SELECT Statement betrifft.

$aArticles = array();

Es wird eine neue Variable bekannt gemacht und mit einem leeren Array initialisiert.

/** @var Article $oProduct */
foreach( $oList as $oProduct )
{
     $aArticles[] = array(
         'id'          => $oProduct->getId(),
         'title'       => $oProduct->oxarticles__oxtitle->value,
         'artnum'      => $oProduct->oxarticles__oxartnum->value,
         'ean'         => $oProduct->oxarticles__oxean->value,
         'icon'        => $oProduct->getIconUrl(),
         'description' => 'Art-Nr.: ' . $oProduct->oxarticles__oxartnum->value . ( $oProduct->oxarticles__oxean->value ? ' / EAN: ' . $oProduct->oxarticles__oxean->value : '' ),
        );
}

Die Variable $oList wird ein einer foreach Schleife durchlaufen um die neue Variable $aArticles mit Werten zu befüllen.