PHP 更改直到 Composer 更新才会显示

PHP changes not showing up until Composer Update

我正在开发一个 cronjob,它将在上次更新日期之前删除产品。

我看到非常奇怪的 Magento 2 行为 - PHP 文件更改不会显示,直到我更新存储库然后 运行 composer update.

商店处于发展模式。 运行 通过 Docker-撰写。

其他插件 的开发过程中,我会尽快:

rm -rf var/generation var/view_preprocessed/ pub/static/frontend generated/code
php -dmemory_limit=6G bin/magento setup:di:compile
php -dmemory_limit=6G bin/magento setup:static-content:deploy -f
php -dmemory_limit=6G bin/magento cache:flush

文件更改显示,有时甚至没有这些命令。

但是,使用这个插件,直到我将更改完全推送到存储库,然后 运行 composer update 与所有其他命令,更改才会显示。

是否有某种我不知道的用于 cron 作业 类 的缓存?

文件夹结构

这是我的文件夹结构:

src\vendor\company\deleteoldproducts\Cron\DeleteOldProducts.php
src\vendor\company\deleteoldproducts\etc\adminhtml\system.xml
src\vendor\company\deleteoldproducts\etc\config.xml
src\vendor\company\deleteoldproducts\etc\crontab.xml
src\vendor\company\deleteoldproducts\etc\module.xml
src\vendor\company\deleteoldproducts\composer.json
src\vendor\company\deleteoldproducts\registration.php

cron 作业正在使用 DeleteOldProducts.php,但使用的是旧版本。我尝试对其进行更改,重新 运行 上述命令,但 cronjob 仍然使用旧版本的文件。这不正常。

这是 php 文件:

<?php

namespace Company\DeleteOldProducts\Cron;

use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;

class DeleteOldProducts
{
    /**
     * @var ProductRepositoryInterface
     */
    protected $_productRepositoryInterface;

    /**
     * @var CollectionFactory
     */
    protected $_productCollectionFactory;

    public function __construct(
        ProductRepositoryInterface $_productRepositoryInterface,
        CollectionFactory $_productCollectionFactory
   ) {
       $this->_productRepositoryInterface = $_productRepositoryInterface;
       $this->_productCollectionFactory = $_productCollectionFactory;
   }

    public function execute()
    {
        $writer = new \Zend_Log_Writer_Stream(BP . '/var/log/DELETE-OLD-PRODUCTS.log');
        $logger = new \Zend_Log();
        $logger->addWriter($writer);
        $logger->info('---DELETING IS HAPPENING---');

        $collection = $this->_productCollectionFactory->create();
        $collection->addAttributeToSelect('*');
        $collection->setPageSize(10);

        $logger->info("COLLECTION?11111111");

        foreach($collection as $product)
        {
            $logger->info('PRODUCT ID' . $product->getId());
        }

        $logger->info("COLLECTION?222222222");

        $logger->info('---DELETING IS HAPPENING---');
        $logger->info('                           ');
        $logger->info('                           ');
   
        return $this;

    }
}

为什么会这样?

我发现了这个问题 - 我正在开发的插件和 composer 中的插件之间存在命名冲突

一个是“deleteoldproducts”,composer 中的一个是“module-deleteoldproducts”。

在我将其推送到存储库后应该删除原始文件夹。