Klasse *ReadServiceDatabaseReader* lässt sich nicht überladen

Thema wurde von BigRib, 2. November 2021 erstellt.

  1. BigRib
    BigRib Erfahrener Benutzer
    Registriert seit:
    26. September 2018
    Beiträge:
    271
    Danke erhalten:
    56
    Danke vergeben:
    32
    Kann es sein, dass man die Klasse "ReadServiceDatabaseReader" nicht überladen kann? Es kommt die Fehlermeldung:

    Code:
    
    Class 'tndReadServiceDatabaseReader_parent' not found
    
    /GXModules/Thrownatur/AdminCombiCollections/Admin/Overloads/ReadServiceDatabaseReader/tndReadServiceDatabaseReader.inc.php:2
    
    Für das Forum gekürzte Datei:

    Code:
    <?php
    class tndReadServiceDatabaseReader extends tndReadServiceDatabaseReader_parent {
        public function getImageLists(int $listId = null): array
        {
            $result  = [];
    
            return $result;
        }
    }
    GX4.5 Beta 2
     
  2. Anonymous
    Anonymous Administrator
    Mitarbeiter
    Registriert seit:
    26. April 2011
    Beiträge:
    1.973
    Danke erhalten:
    1.607
    Danke vergeben:
    358
    @BigRib Die Services sind nicht überladbar, hier wäre es gut zu wissen was du vorhast, eventuell gibt es eine andere Möglichkeit.
     
  3. BigRib
    BigRib Erfahrener Benutzer
    Registriert seit:
    26. September 2018
    Beiträge:
    271
    Danke erhalten:
    56
    Danke vergeben:
    32
    @Till (Gambio)

    Wir haben ca. 10000 Varianten im Schnitt im Shop, das ist sehr unübersichtlich. Deswegen habe ich mir was gebaut, was aus Bildern automatisch Kollektionen erstellt und diese werden auch einem Artikel zugeordnet.

    Da ich nun nur noch die Kollektionen benötige, die dem jeweiligen Artikel zugeordnet sind, muss ich die Datenbankabfrage dementsprechend abändern. Das klappt auch einwandfrei.

    Code:
    class tndReadServiceDatabaseReader extends tndReadServiceDatabaseReader_parent {
        public function getImageLists(int $listId = null): array
        {
            $result  = [];
    
            $referer_url = $_SESSION['user_info']['referer_url'];
            $parsing_url = parse_url($_SESSION['user_info']['referer_url'],  PHP_URL_QUERY);
            if(isset($parsing_url)) {
              parse_str($parsing_url, $parcing_array);
            }
    
    
            //trigger_error(var_dump($parcing_array["products_id"]) , E_USER_ERROR);
    
            $productId = (int) $parcing_array["products_id"];
            $builder = $this->queryBuilder
                            ->select('product_image_list.product_image_list_id, product_image_list.product_image_list_name')
                            ->from(self::IMAGE_LIST_TABLE_NAME)
                            ->join('product_image_list_to_products', 'product_image_list_to_products.product_image_list_id = product_image_list.product_image_list_id', 'left');
    
            if (!empty($productId)) {
    
                $builder->where(['product_image_list_to_products.' . self::PROPERTY_COMBI_PRODUCTS_ID_COLUMN => $productId]);
            }
    
            if ($listId !== null) {
    
                $builder->where(['product_image_list.' . self::LIST_ID_COLUMN => $listId]);
            }
    
            $entries = $builder->get()->result_array();
    
            if (count($entries)) {
    
                foreach ($entries as $entry) {
    
                    [
                        self::LIST_ID_COLUMN   => $listId,
                        self::LIST_NAME_COLUMN => $listName
                    ] = $entry;
    
                    $result[] = $this->createImageListDto($listId, $listName);
                }
            }
    
            return $result;
        }
    }
     
  4. BigRib
    BigRib Erfahrener Benutzer
    Registriert seit:
    26. September 2018
    Beiträge:
    271
    Danke erhalten:
    56
    Danke vergeben:
    32
    @Till (Gambio)
    Hast Du was gefunden?

    Ich würde das was ich da baue, gern auch einen Mitbewerber verfügbar machen, dann muss es aber Updatesicher sein.