Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 01.04.2022 12:22:10

спасибо и за ваш ответ, не очень правда ясно почему именно так, а не иначе, хоть и документацию вы указали - но что-то не доходит чем же неугодна другая запись (наверное надо более простое объяснение).
Вообщем-то хватило, того, что надо просто писать полный тэг ...

#2 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 27.01.2022 14:01:29

<? - не делайте так. современные версии пхп по умолчанию не используют короткие теги. а раз интерпретатор не воспринимает текст за ним как код пхп, то и класс не будет объявлен.

Ну надо же, такого я не ожидал - и правда стоило только <?php сделать и заработало. А с каких это пор современные версии php стали забивать на короткие тэги? вроде бы когда то наоборот было, новые версии стали короткие поддерживать (я правда не так хорошо знаком с историей пхп), а счас получается обратная мода пошла?
Спасибо вам за точный ответ, ну не подумал бы наверное никогда что в этом может быть проблема. И сколько читаю про программированию и справки всякие, но такого не видел.
Про регистро зависимые системы это я немного в курсе, вообщем-то и юзал как пример для сравнения ошибки, которая с моим классом была.
Спасибо за советы, может пригодятся.
А я думал где-то в настройках ларавел у меня косяк или от сгенеренных файлов.
У меня как-то недавно был заказ - кое-что сделать на ларавел - знаний практически очень мало было по этой системе, разок только что-то ковырялся с ней, но этот сайт попался вообще "дикий" для меня - там у него установлена еще какая то система  - apiato/ship и кажется еще что-то  - которую я вообще ни разу не видел, но которая несколько структуру папок-файлов изменяет:
https://prnt.sc/26k3m4t
(явно не стандартная структура ларавела - какие-то типа контейнеры, в которых типа свои сайты или блоки - модели, вьюхи и прочее)
вообщем изучив вкратце кучу всяких доков включая и по юникс системе, кое-как решил задачу - людям надо, обратиться им было некуда, а я подзаработать был не против. Я обычно по битрикс сайтам раньше занимался несколько лет и ларавел внову был для меня, но осилил однако, Слава Богу.
Что самым необычным было после битрикса, так это то что некие команды laravel - типа artisan могут изменить вообще папку public. Т.е. берутся ресурсы из resources, как-то компуются и пишутся в public. - это было вообще жестью, потому что у тех была копия сайта для правок, а у нее в линуксе с доступами какие-то ограничения были, так что даже нельзя было скомпилировать, так и правил в двух местах - в основном это js касается - он как-то генерил совсем другие файлы, объединял их, переменные другие делал, вообщем я всего не понял, интуитивно и несколько понимая код добавил своих правок, благо их было не особо много.
Я даже переносил сайт на другой хостинг где с доступами было просторнее, но перенос с него не очень удобно было делать, приходилось куски кода переносить.
Вот и решил подучить ларавел - чтоб если еще будут такие задачи, чтобы быть более вооруженным инструментарием, а то вообще прям как боевое крещение новичка было (хоть в программировании давно уже не новичок). Помогло несколько знание CodeIgniter - он похож чем-то смахивает на ларавел, а с ним я дела уже вел, поэтому более менее смог сориентироваться где что найти, добавить изменить в ларавеле, и по командам терминала уже тоже доводилось что-то делать.

#3 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 25.01.2022 10:32:28

В рамках одного из уроков, проект на хостинг я выставлял (с тестовым периодом был хостинг, правда тогда еще этой проблемы не было или не стал тестировать), сейчас это делать, пока смысла нет, да и я дальше уроки прохожу на локалке, вообщем-то заплатка решение есть (размещать классы как модели) и ладно. Конечно это дичь, при освоении ларавела, такое дело обнаружить, но вообщем-то терпимо, не так много пока классов своих отдельных клепается (всего пока один есть), остальные вообщем через artisan добавляются в "системные" папки.
Если вы говорите, что вообщем-то все нормально с классами у ларавел 8, то волноваться думаю не о чем.
Возможно чтобы решить проблему, нужен именно специалист, который эту тему хорошо знает и возможно сам проходил через такое.
Спасибо вам за ваше беспокойство.

#4 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 25.01.2022 10:05:48

Есть положительный результат ?

пока нет, об этом я и говорил - сказав, что результат от обновы компосера - нулевой.
Похоже проблема в чем-то другом.

#5 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 25.01.2022 09:25:26

Ты уверен, что правильно меня понял про обновление версии самого композера, а не 'composer update' ?

Composer version 2.2.5 2022-01-21 17:25:52
https://coderteam.ru/blog/obnovlyaemsya … na-ubuntu/ - делал по этой инструкции (self-update не помогло, пришлось через файлик).

#6 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 25.01.2022 09:09:01

Реально вы думаете это должно было помочь?
обновил до 2 версии, пришлось только обновлять еще debugbar, но толку это никакого не дало - все тоже.

composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: barryvdh/laravel-debugbar
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: laravel/ui
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
Generated optimized autoload files containing 5150 classes

А также выполнил:

sudo php artisan optimize:clear
[sudo] password for star:
Cached events cleared!
Compiled views cleared!
Application cache cleared!
Route cache cleared!
Configuration cache cleared!
Compiled services and packages files removed!
Caches cleared successfully!

эффект все равно нулевой.

#7 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 25.01.2022 08:47:21

composer du после создания нового класса сделал?Какая версия composer/Laravel/php ?

сделал, но это роли не играет в данном деле, как мне кажется, т.к. не стороннее разрешение устанавливал.

Composer 1.10.1 2020-03-13 20:34:27

Laravel Framework 8.74.0

PHP 7.4.3 (cli) (built: Oct 25 2021 18:20:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

#8 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 25.01.2022 08:43:57

и еще одна интересная вещь:
если в файле контроллера я пробую подключить файл с классом наприямую через require:
require __DIR__.'/../../MyClasses/Mybasket.php';
то получаю ошибку:

ErrorException
require(/var/www/testsite/public_html/project/app/Http/Controllers/../../MyClasses/Mybasket.php): failed to open stream: No such file or directory

А если делаю это же с классом модели:
require __DIR__.'/../../Models/Basket.php';
то ошибки нету, но стоит изменить букву M на m в пути и ошибка как у моего класса:

ErrorException
require(/var/www/testsite/public_html/project/app/Http/Controllers/../../models/Basket.php): failed to open stream: No such file or directory

Получается его как будто и нет вовсе, хотя он и есть, проверял по ssh (хотя вообщем-то редактор исправно работает, и сигналит, если запись не удалась). Типа может ларавел создает какую-то свою область с файлами, добавляя туда все что ему нужно, а остальное просто не видит или может какой кэш еще барахлит?

#9 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 25.01.2022 08:21:56

Перепроверь пути и название класса на предмет ошибок (например кирилица).

Да все правильно написано было, я же говорю - VS-CODE редактор кода видит класс, импортирует его, функции доступны у переменной, а именно при запуске - ошибка.
При этом если создавать классы в системных папках (незнаю как их назвать), типа /app/mail/, /app/provider, /app/services, /app/models, /app/request ... наследующиеся от классов ядра, т.е те которые можно через artisan сделать, то они работают.
Может какие-то доступы ларавела к нестандартным (т.е. свойским) папкам заблочены?

Счас еще раз попробовал - сделал папку MyClasses в папке app, в ней файл: MyBasket.php:

<?
namespace App\MyClasses;

use DebugBar\DebugBar;

class MyBasket {
   
    public function start() {
        DebugBar::info("mybasket start");
    }
}

и в контроллере корзины вызов:

<?php
namespace App\Http\Controllers;

use App\Models\Order;
use App\Models\Basket;
use App\Models\Product;
use App\MyClasses\MyBasket;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Barryvdh\Debugbar\Facades\Debugbar;

class BasketController extends Controller
{

    public function basket()
    {
        $myBasket = new MyBasket();
        $myBasket->start();
...

и та же самая ошибка выходит при попытке войти в корзину:

Error
Class 'App\MyClasses\MyBasket' not found
http://localhost/basket

Возможно и то что локалхост на ubuntu из-под винды (wsl), но вроде все остальное пашет на нем - и composer всякие пакеты устанавливает. По сути это вообще простой класс, компосер его даже и не трогает (как мне кажется). А может ларавел уже такой стал, что обычные классы уже не поддерживает, надо писать именно свой сервис, фасад или что там нужно и через него делать вызовы?
надо будет попробовать может быть где на хостинге после чистой установки ларавела заюзать.
А то с этими уроками в настройках что-то менял, какое-то файло хранилища для картинок настраивал, может что-то и задел.

#10 Re: Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 21.01.2022 14:16:57

Вообщем решил проблему (если можно так сказать), методом создания модели через artisan.

php artisan make:model Basket

И все что надо поместил в нее, вообщем-то работает нормально. Конечно это не свой какой-то класс в произвольном месте, но дело делает и то хорошо, чем ничего.

#11 Laravel 6/7/8/9/10 » Почему-то не подключается свой обычный простой класс в laravel 8 » 21.01.2022 08:48:36

SergRom
Ответов: 19

Прохожу лекцию уроков по ларавел Ссылка на лекцию в youtube
Все делаю у себя на локалхосте (ubuntu под win10).
Лекция старая, и автор использовал примерно Ларавел 5, а под 8 не все как у него и на неком уроке 23 столкнулся с проблемой - ларавел не видит мой обычный простой класс.

Согласно урока добавил папку Classes и файл Basket.php в папку app, все прописал где надо (namespace в файле класса, use в контроллере), а выдает ошибку - класс не найден, неясно в чем проблема.
Файл класса
Использование в контроллере
Ошибка в браузере

composer dump-autoload   - делал, не помогает

Может кто-то подскажет чего еще не так? Запарился уже битый день ищу решения.
судя по статья в интернете - вроде все правильно даже для 8 версии ларавел такой подход создания классов, а почему-то не пашет.
Пробовал менять имя файла + имя класса, папку файла - ничего не помогает. При этом среда VS-CODE видит класс в контроллере, а при запуске он почему-то выдает ошибку.

Подвал раздела