Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Первый вопрос
Допустим есть класс Eloquent модели. В нем есть отношения и свои какие то еще методы:
А в каком регистре или как правильно назвать, нужно именовать методы method_name или methodName
Дело в том что изначально и в том числе в пакетах вроде бы отношения пишут как method_name, в тоже время вроде бы хороший тон свои функции писать как methodName
Второй вопрос:
А в каком случае мы берем множественное число, а в каком единственное:
Например, вроде бы имя модели единственное число правильно писать... А имя отношения вроде бы множественное..
В общем что бы тут пофиксить и переименовать в указанном выше смысле
<?php
namespace App\Classes\Models;
use Illuminate\Notifications\Notifiable;
//use App\Notifications\CustomResetPassword;
use Illuminate\Foundation\Auth\User as Authenticatable;
use \Plunk\Mediable;
use Laravel\Cashier\Billable;
use \Plank\Mediable\Mediable as PlunkMediable;
use Braintree\PaymentMethod as BraintreePaymentMethod;
use Braintree\PayPalAccount as BraintreePayPalAccount;
use Braintree\Customer as BraintreeCustomer;
use Braintree\Transaction as BraintreeTransaction;
use Braintree\Subscription as BraintreeSubscription;
use Illuminate\Support\Arr;
use App\Classes\Models\PaymentMethod as AppPaymentMethod;
class User extends Authenticatable
{
use Notifiable;
use Billable;
use PlunkMediable;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function subscriptions()
{
return $this->hasMany(Subscription::class, $this->getForeignKey())->orderBy('created_at', 'desc');
}
public function newSubscription($subscription, $plan)
{
return new SubscriptionBuilder($this, $subscription, $plan);
}
public function payments()
{
return $this->hasMany(Payment::class, $this->getForeignKey())->orderBy('created_at', 'desc');
}
public function payment_methods()
{
return $this->hasMany(AppPaymentMethod::class, $this->getForeignKey())->orderBy('created_at', 'desc');
}
public function default_payment_method()
{
return $this->hasOne(AppPaymentMethod::class, 'id', 'default_payment_method_id');
}
public function paymentMethodWithIsDefault()
{
return $this->payment_methods()->withCount('defaultForUser')->get();
}
public function getDefautPaymentMethod()
{
$paymentMethod = $this->default_payment_method()->first();
return $paymentMethod;
}
public function paymentWithMethod()
{
return $this->payments()->with('payment_method', 'subscription.plan')->get();
}
Изменено htclog81 (17.11.2017 15:39:26)
Не в сети
нужно именовать методы method_name или methodName
methodName
в каком случае мы берем множественное число, а в каком единственное
Единственное число для hasOne и belongsTo, множественное для всех остальных.
Не в сети
нужно именовать методы method_name или methodNamemethodName
И для отношений типа
public function paymentMethods()
{
return $this->hasMany(AppPaymentMethod::class, $this->getForeignKey())->orderBy('created_at', 'desc');
}
Так?
в каком случае мы берем множественное число, а в каком единственноеЕдинственное число для hasOne и belongsTo, множественное для всех остальных.
При этом названия классов в единственном - Subscription Payment PaymentMethod, а не Subscription, Payments, PaymentMethods??
А методы не связанные с отношениями? Смотря что они возвращают? От этого зависит единственное или множественное число? Если возвращают коллекцию то множественное? Если один объект то единственное?
Изменено htclog81 (17.11.2017 17:41:34)
Не в сети
При этом названия классов в единственном - Subscription Payment PaymentMethod, а не Subscription, Payments, PaymentMethods??
Почему? Там же hasMany.
А методы не связанные с отношениями? Смотря что они возвращают? От этого зависит единственное или множественное число? Если возвращают коллекцию то множественное? Если один объект то единственное?
Я думаю здесь соглашений нет, но я делаю именно так, чтобы код был более читаемым.
Не в сети
При этом названия классов в единственном - Subscription Payment PaymentMethod, а не Subscription, Payments, PaymentMethods??Почему? Там же hasMany.
Тут я не про отношения уже спрашиваю, а про сами классы как называть
Не в сети
Тут я не про отношения уже спрашиваю, а про сами классы как называть
Модели в единственном.
Не в сети
Хорошо. А методы внутри модели которые не являются отношениями?
Например
public function paymentWithMethod()
{
return $this->payments()->with('payment_method', 'subscription.plan')->get();
}
public function paymentMethodWithIsDefault()
{
return $this->payment_methods()->withCount('defaultForUser')->get();
}
Как лучше назвать в плане числа? Если первый возращает платежи вместе с картами. А второй карты с признаком какая умолчательная..
Не в сети
Как лучше назвать в плане числа? Если первый возращает платежи вместе с картами. А второй карты с признаком какая умолчательная..
Выше ответил. Я называю во множестенном, если коллекция возвращается. В единственном, если объект.
Не в сети
А если название модели PaymentMethod то во множественном метод ты бы назвал getPaymentMethods или getPaymentsMethods ?
Не в сети
Не в сети
Пропуски строк между блоками кода
Как из вариантов вернее?
1.
public function resume(Request $request)
{
$user = Auth::user();
try {
$user->subscription->resume();
} catch (\Throwable $e) {
return redirect()->route('home.subscription')->with('status', $e->getMessage());
}
return redirect()->route('home.subscription')->with('status', 'Subscription resume');
}
2.
public function resume(Request $request)
{
$user = Auth::user();
try {
$user->subscription->resume();
} catch (\Throwable $e) {
return redirect()->route('home.subscription')->with('status', $e->getMessage());
}
return redirect()->route('home.subscription')->with('status', 'Subscription resume');
}
3.
public function resume(Request $request)
{
$user = Auth::user();
try {
$user->subscription->resume();
} catch (\Throwable $e) {
return redirect()->route('home.subscription')->with('status', $e->getMessage());
}
return redirect()->route('home.subscription')->with('status', 'Subscription resume');
}
Изменено htclog81 (21.11.2017 14:58:32)
Не в сети
public function resume(Request $request)
{
$user = Auth::user();
try {
$user->subscription->resume();
} catch (\Throwable $e) {
return redirect()->route('home.subscription')->with('status', $e->getMessage());
}
return redirect()->route('home.subscription')->with('status', 'Subscription resume');
}
Не в сети
Хорошо понятно. После и перед фигурными скобками строку не пропускаем
Не в сети
Кстати а знаешь ли редактор или IDE у которого php код автоматом форматируется корректно?
Не в сети
Кстати а знаешь ли редактор или IDE у которого php код автоматом форматируется корректно?
Нет, но наверняка есть много инструментов вроде этого. Погугли снифферы и линты.
Не в сети
Нет, но наверняка есть много инструментов вроде этого.
Добавил в закладки как разберемся с докером попробую.
Не в сети
А хорошо ли положить трейты прямо в ту папку где модели? Типа BillableTrait.php
Не в сети
Не в сети
Создай папку Traits в каталоге app, и туда ложи все трейты
У меня так и есть. Просто не удобно каждый раз туда лазить за трейтом. Проще вместе с моделями. Подряд открываешь и их и трейты
Не в сети
Страницы 1