Typehint надо использовать в классах использующих эти данные
Там будет уместно
логично, тогда и вправду не нужно приводить тип
LIME пишет:
А еще есть extract()
IDE будет ругаться, если бд не прикручена
LIME пишет:
Лучше завести класс работающий с хранилищем
Тогда для смены хранилища не придется менять класс модели
Принцип open/close SOLID
а вот тут можно поподробнее.
Не совсем понял, чем плох этот класс в роли хранилища? (Добавление)
teddy пишет:
1. При включении строгого режима получите ошибку из за попытки передать в качестве параметра строку похожую на число для int параметра.
у меня включен строгий режим, нет ошибок.
teddy пишет:
Ниже приведу более простую реализацию, для новичка в таких делах вполне сойдет.
Я несколько лет занимаюсь php, могу сказать, что у меня не было наставника и я изучал язык сам и чувствую свои пробелы. Но реализация в примере меня не как не устраивает.
Я хочу, чтобы экземпляр класса Product было невозможно создать, если продукт в базе не найден. Класс реализует метод для проверки существования такого продукта, которым и нужно воспользоваться перед созданием экземпляра класса. Если продукта не существует в базе, будет фатальная ошибка, а следовательно где то в коде ошибка, которую будет легко найти и исправить.
Пока писал понял, что для выборки 100 продуктов в моем случае надо будет сделать 100 запросов, а так один... это не есть гуд. Так же много полей не будут использованы, т.е. лишняя нагрузка на память - ок согласен, надо что-то менять.
Просто проект не из одного файла состоит и хочется сделать универсальный класс под хранение информации об одном объекте
И так есть класс Product экземпляр которого создается по product_id.
Задумка такая.. Использовать возможности PHP 7, а именно поддержку контроля скалярных типов данных, при выборке из бд, для приведения всех полей к нужному типу.
Добрый день,
описываю ситуацию:
есть класс Product, который содержит всю информацию о товаре. Так же есть куча других классов, которые его используют. При создании экземпляра класса Product используется id товара, по которому из бд грузится инфа в класс.
Однако т.к. много классов которые используют класс Product, в силу несовершенства архитектуры экцемпляр одного и того же продукта может быть создан несколько раз, а если учесть, что таких продуктов может быть много, а информация о продукте достаточно обширна, то хочется избежать такого кол-ва запросов к бд.
Мне пришло в голову решение создать еще один класс ProductBase со статической переменной products (@var Product[]) и методов getProduct() (@return Product), который в случае, если экземпляр этого продукта был уже создан возвращал его из переменной products, иначе создавал такой экземпляр и сохранял его в эту самую переменную.
Мне такое решение не нравится, и уверен, что умные люди давно придумали более красивых выход из данной ситуации. Не подскажите мне его?
Надеюсь, предложенные решения не будут связаны с мемкешом, редисом и др. подобными бд. Интересует именно структурное решение.
Вот почему бы разработчикам php не создать стандартную функцию для решения любых простых арифметических действий как в моём случае...
difight пишет:
Это щас прикол такой был или я чё то не пойму ?
polger пишет:
Поясни
Есть инфа, что числа проще записывать в отдельные переменные и производить действия между переменными... невозможно предусмотреть функцию для каждого частного случая.
не знаю, что там у Вас за код, но уверен, что можно обойтись без таких извращений...
Нормальные вычисления выглядят как-то так...
Спасибо за помощь, пробовал так не получалось... в итоге оказалось там проблема в другом была, всё работало... но из-за лишней точки)) не было результата
Существует ли функция способная вычислить результат:
в стандартных средствах языка такой функции нет, но ее можно написать, конкретно для этого примера (целые числа, 2 операции - вычитание, умножение) вот:
Как сделать так, чтобы переменная была доступна везде. На все доменах, подоменнах и тд.
Как задать ее так, чтобы прописав ее однажды(в системе например). Ее можно было достать во всех файлах, на всех сайтах...
То есть задать глобальную переменную, только не на один какой та сайт, а на все...
А в чем проблема запихнуть ее в базу данных? к базе данных можно из любого места где есть интернет получить доступ.
Вариантов несколько, все зависит от вашых навиков. Лично я в C# ни бум-бум. Но в большинстве случаев используют HTTP API, сокеты, XML-RPC или менеджер очередей (RabbitMQ например).
HTTP API из этого звучит проще всего)) спасибо за советы
Мне кажется что через бд вполне неплохой вариант, потому что приложения могут находится и на одном и на разных серверах и вам не нужно будет писать сетевую часть самому.
Посмотрел видео урок C# + php там реализован вариант вызова php через WebClient с передачей post данных.
Добрый день,
работаю на php достаточно давно, но с шарпом знакомился только во время учебы в ВУЗе и так до сих пор особо он мне и не пригодился. Однако сейчас получилось так, что реализация нужная мне выполнена на шарпе и я вынужден ее использовать.
Подскажите как лучше сделать адаптировать это приложение и прикрутить к своему на php.
Взаимодействие будет выглядеть примерно так:
php получает данные, обновляет информацию в бд
в свою очередь приложение на шарпе которое запущенно постоянно, ежесекундно чекает не появилось ли новых заданий для него и переходит сразу к выполнению если такие есть, результат записывает в бд.
Можно ли как то это оптимизировать? например передавать данные непосредственно в приложение на шарпе, слышал вроде можно через сокеты это реализовать если не ошибаюсь