Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
спасибо и за ваш ответ, не очень правда ясно почему именно так, а не иначе, хоть и документацию вы указали - но что-то не доходит чем же неугодна другая запись (наверное надо более простое объяснение).
Вообщем-то хватило, того, что надо просто писать полный тэг ...
<? - не делайте так. современные версии пхп по умолчанию не используют короткие теги. а раз интерпретатор не воспринимает текст за ним как код пхп, то и класс не будет объявлен.
Ну надо же, такого я не ожидал - и правда стоило только <?php сделать и заработало. А с каких это пор современные версии php стали забивать на короткие тэги? вроде бы когда то наоборот было, новые версии стали короткие поддерживать (я правда не так хорошо знаком с историей пхп), а счас получается обратная мода пошла?
Спасибо вам за точный ответ, ну не подумал бы наверное никогда что в этом может быть проблема. И сколько читаю про программированию и справки всякие, но такого не видел.
Про регистро зависимые системы это я немного в курсе, вообщем-то и юзал как пример для сравнения ошибки, которая с моим классом была.
Спасибо за советы, может пригодятся.
А я думал где-то в настройках ларавел у меня косяк или от сгенеренных файлов.
У меня как-то недавно был заказ - кое-что сделать на ларавел - знаний практически очень мало было по этой системе, разок только что-то ковырялся с ней, но этот сайт попался вообще "дикий" для меня - там у него установлена еще какая то система - apiato/ship и кажется еще что-то - которую я вообще ни разу не видел, но которая несколько структуру папок-файлов изменяет:
https://prnt.sc/26k3m4t
(явно не стандартная структура ларавела - какие-то типа контейнеры, в которых типа свои сайты или блоки - модели, вьюхи и прочее)
вообщем изучив вкратце кучу всяких доков включая и по юникс системе, кое-как решил задачу - людям надо, обратиться им было некуда, а я подзаработать был не против. Я обычно по битрикс сайтам раньше занимался несколько лет и ларавел внову был для меня, но осилил однако, Слава Богу.
Что самым необычным было после битрикса, так это то что некие команды laravel - типа artisan могут изменить вообще папку public. Т.е. берутся ресурсы из resources, как-то компуются и пишутся в public. - это было вообще жестью, потому что у тех была копия сайта для правок, а у нее в линуксе с доступами какие-то ограничения были, так что даже нельзя было скомпилировать, так и правил в двух местах - в основном это js касается - он как-то генерил совсем другие файлы, объединял их, переменные другие делал, вообщем я всего не понял, интуитивно и несколько понимая код добавил своих правок, благо их было не особо много.
Я даже переносил сайт на другой хостинг где с доступами было просторнее, но перенос с него не очень удобно было делать, приходилось куски кода переносить.
Вот и решил подучить ларавел - чтоб если еще будут такие задачи, чтобы быть более вооруженным инструментарием, а то вообще прям как боевое крещение новичка было (хоть в программировании давно уже не новичок). Помогло несколько знание CodeIgniter - он похож чем-то смахивает на ларавел, а с ним я дела уже вел, поэтому более менее смог сориентироваться где что найти, добавить изменить в ларавеле, и по командам терминала уже тоже доводилось что-то делать.
В рамках одного из уроков, проект на хостинг я выставлял (с тестовым периодом был хостинг, правда тогда еще этой проблемы не было или не стал тестировать), сейчас это делать, пока смысла нет, да и я дальше уроки прохожу на локалке, вообщем-то заплатка решение есть (размещать классы как модели) и ладно. Конечно это дичь, при освоении ларавела, такое дело обнаружить, но вообщем-то терпимо, не так много пока классов своих отдельных клепается (всего пока один есть), остальные вообщем через artisan добавляются в "системные" папки.
Если вы говорите, что вообщем-то все нормально с классами у ларавел 8, то волноваться думаю не о чем.
Возможно чтобы решить проблему, нужен именно специалист, который эту тему хорошо знает и возможно сам проходил через такое.
Спасибо вам за ваше беспокойство.
Есть положительный результат ?
пока нет, об этом я и говорил - сказав, что результат от обновы компосера - нулевой.
Похоже проблема в чем-то другом.
Ты уверен, что правильно меня понял про обновление версии самого композера, а не 'composer update' ?
Composer version 2.2.5 2022-01-21 17:25:52
https://coderteam.ru/blog/obnovlyaemsya … na-ubuntu/ - делал по этой инструкции (self-update не помогло, пришлось через файлик).
Реально вы думаете это должно было помочь?
обновил до 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!
эффект все равно нулевой.
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
и еще одна интересная вещь:
если в файле контроллера я пробую подключить файл с классом наприямую через 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 (хотя вообщем-то редактор исправно работает, и сигналит, если запись не удалась). Типа может ларавел создает какую-то свою область с файлами, добавляя туда все что ему нужно, а остальное просто не видит или может какой кэш еще барахлит?
Перепроверь пути и название класса на предмет ошибок (например кирилица).
Да все правильно написано было, я же говорю - 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 всякие пакеты устанавливает. По сути это вообще простой класс, компосер его даже и не трогает (как мне кажется). А может ларавел уже такой стал, что обычные классы уже не поддерживает, надо писать именно свой сервис, фасад или что там нужно и через него делать вызовы?
надо будет попробовать может быть где на хостинге после чистой установки ларавела заюзать.
А то с этими уроками в настройках что-то менял, какое-то файло хранилища для картинок настраивал, может что-то и задел.
Вообщем решил проблему (если можно так сказать), методом создания модели через artisan.
php artisan make:model Basket
И все что надо поместил в нее, вообщем-то работает нормально. Конечно это не свой какой-то класс в произвольном месте, но дело делает и то хорошо, чем ничего.
Прохожу лекцию уроков по ларавел Ссылка на лекцию в youtube
Все делаю у себя на локалхосте (ubuntu под win10).
Лекция старая, и автор использовал примерно Ларавел 5, а под 8 не все как у него и на неком уроке 23 столкнулся с проблемой - ларавел не видит мой обычный простой класс.
Согласно урока добавил папку Classes и файл Basket.php в папку app, все прописал где надо (namespace в файле класса, use в контроллере), а выдает ошибку - класс не найден, неясно в чем проблема.
Файл класса
Использование в контроллере
Ошибка в браузере
composer dump-autoload - делал, не помогает
Может кто-то подскажет чего еще не так? Запарился уже битый день ищу решения.
судя по статья в интернете - вроде все правильно даже для 8 версии ларавел такой подход создания классов, а почему-то не пашет.
Пробовал менять имя файла + имя класса, папку файла - ничего не помогает. При этом среда VS-CODE видит класс в контроллере, а при запуске он почему-то выдает ошибку.
Страницы 1