laravel autoload.php不能包含在内

时间:2017-12-11 01:40:18

标签: php laravel composer-php

我正在尝试使用供应商/自动加载,但它一直给我这个错误:

protocol AppleNewsFlowLayoutDelegate: class {
    func AppleNewsFlowLayout(_ AppleNewsFlowLayout: AppleNewsFlowLayout, cellTypeForItemAt indexPath: IndexPath) -> NewsCellType
}

class AppleNewsFlowLayout: UICollectionViewFlowLayout {

    var maxY: CGFloat = 0.0
    var isVSetOnce = false
    weak var delegate: AppleNewsFlowLayoutDelegate?
    var attributesArray: [UICollectionViewLayoutAttributes]?

    private var numberOfItems:Int{
        return (collectionView?.numberOfItems(inSection: 0))!
    }

    override func prepare() {
        for item in 0 ..< numberOfItems{
            super.prepare()
            minimumLineSpacing = 10
            minimumInteritemSpacing = 16
            sectionInset = UIEdgeInsets(top: 10, left: 16, bottom: 10, right: 16)
        }
    }

    override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
        guard let newsType: NewsCellType = delegate?.AppleNewsFlowLayout(self, cellTypeForItemAt: indexPath) else {
            fatalError("AppleNewsFlowLayoutDelegate method is required.")
        }

        let screenWidth = UIScreen.main.bounds.width
        let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath)
        var x = sectionInset.left
        maxY = maxY + minimumLineSpacing

        switch newsType {

        case .big:
            let width = screenWidth - sectionInset.left - sectionInset.right
            attributes.frame = CGRect(x: x, y: maxY, width: width, height: width * 1.2)
            maxY += width * 1.2

        case .horizontal:
            let width = screenWidth - sectionInset.left - sectionInset.right
            attributes.frame = CGRect(x: x, y: maxY, width: width, height: 150)
            maxY += 150

        case .vertical:
            let width = (screenWidth - minimumInteritemSpacing - sectionInset.left - sectionInset.right) / 2
            x = isVSetOnce ? x + width + minimumInteritemSpacing : x
            maxY = isVSetOnce ? maxY-10 : maxY
            attributes.frame = CGRect(x: x, y: maxY, width: width, height: screenWidth * 0.8)
            if isVSetOnce {
                maxY += screenWidth * 0.8
            }
            isVSetOnce = !isVSetOnce
        }
        return attributes
    }


    override var collectionViewContentSize: CGSize {
        return CGSize(width: UIScreen.main.bounds.width, height: maxY)
    }

    override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        if attributesArray == nil {
            attributesArray = [UICollectionViewLayoutAttributes]()
            print(collectionView!.numberOfItems(inSection: 0) - 1)
            for i in 0 ... collectionView!.numberOfItems(inSection: 0) - 1
            {
                let attributes = self.layoutAttributesForItem(at: IndexPath(item: i, section: 0))
                attributesArray!.append(attributes!)
            }
        }
        return attributesArray
    }
}

我检查是因为路径问题但没有任何效果: 有人说基于我的autoload.php应该是这样的:

Illuminate\View\Engines\PhpEngine::main(): Failed opening required 'vendor/autoload.php' (include_path='C:\xampp\php\PEAR')

有些人说它已经存在,所以不需要自动加载,我所要做的就是使用composer dump-autoload,但仍然没有。根据此链接Laravel 5 how to include autoload.php

这是我的自动加载文件:(位于\ project \ vendor)

require_once __DIR__ . '/vendor/autoload.php'; //but doesn't work

有人可以帮我解决这个问题吗?提前致谢

2 个答案:

答案 0 :(得分:0)

哪个文件包含需要自动加载器的行?您确定它与放置供应商文件夹的目录相同吗?

答案 1 :(得分:-1)

如果您在运行

时也遇到错误
composer dump-autoload

首先运行此命令

RDP

此命令将清除所有已编译的文件及其路径。