Laravel по-русски

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

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

#1 17.11.2017 15:39:02

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Вопросы по стилю

Первый вопрос

Допустим есть класс 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)

Не в сети

#2 17.11.2017 16:29:20

Re: Вопросы по стилю

нужно именовать методы method_name или methodName

methodName

в каком случае мы берем множественное число, а в каком единственное

Единственное число для hasOne и belongsTo, множественное для всех остальных.

Не в сети

#3 17.11.2017 17:40:49

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

нужно именовать методы 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)

Не в сети

#4 17.11.2017 17:59:21

Re: Вопросы по стилю

При этом названия классов в единственном - Subscription Payment PaymentMethod, а не Subscription, Payments, PaymentMethods??

Почему? Там же hasMany.

А методы не связанные с отношениями? Смотря что они возвращают? От этого зависит единственное или множественное число? Если возвращают коллекцию то множественное? Если один объект то единственное?

Я думаю здесь соглашений нет, но я делаю именно так, чтобы код был более читаемым.

Не в сети

#5 17.11.2017 18:00:19

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

При этом названия классов в единственном - Subscription Payment PaymentMethod, а не Subscription, Payments, PaymentMethods??Почему? Там же hasMany.


Тут я не про отношения уже спрашиваю, а про сами классы как называть

Не в сети

#6 17.11.2017 18:01:16

Re: Вопросы по стилю

Тут я не про отношения уже спрашиваю, а про сами классы как называть

Модели в единственном.

Не в сети

#7 17.11.2017 18:16:15

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

Хорошо. А методы внутри модели которые не являются отношениями?

Например

public function paymentWithMethod()
{
		return $this->payments()->with('payment_method', 'subscription.plan')->get();
}


public function paymentMethodWithIsDefault()
{
    return $this->payment_methods()->withCount('defaultForUser')->get();
}	

Как лучше назвать в плане числа? Если первый возращает платежи вместе с картами. А второй карты с признаком какая умолчательная..

Не в сети

#8 17.11.2017 18:21:32

Re: Вопросы по стилю

Как лучше назвать в плане числа? Если первый возращает платежи вместе с картами. А второй карты с признаком какая умолчательная..

Выше ответил. Я называю во множестенном, если коллекция возвращается. В единственном, если объект.

Не в сети

#9 17.11.2017 18:35:09

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

А если название модели PaymentMethod то во множественном метод ты бы назвал getPaymentMethods или getPaymentsMethods ?

Не в сети

#10 17.11.2017 18:36:08

Не в сети

#11 21.11.2017 14:54:54

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

Пропуски строк между блоками кода

Как из вариантов вернее?

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)

Не в сети

#12 21.11.2017 17:05:25

Re: Вопросы по стилю

PHP
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');
}

Не в сети

#13 21.11.2017 18:08:57

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

Хорошо понятно. После и перед фигурными скобками строку не пропускаем

Не в сети

#14 21.11.2017 18:10:51

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

Кстати а знаешь ли редактор или IDE у которого php код автоматом форматируется корректно?

Не в сети

#15 21.11.2017 18:13:41

Re: Вопросы по стилю

Кстати а знаешь ли редактор или IDE у которого php код автоматом форматируется корректно?

Нет, но наверняка есть много инструментов вроде этого. Погугли снифферы и линты.

Не в сети

#16 21.11.2017 18:15:53

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

Нет, но наверняка есть много инструментов вроде этого.

Добавил в закладки как разберемся с докером попробую.

Не в сети

#17 21.11.2017 21:36:58

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

А хорошо ли положить трейты прямо в ту папку где модели? Типа BillableTrait.php

Не в сети

#18 22.11.2017 10:46:20

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Вопросы по стилю

  1. А хорошо ли положить трейты прямо в ту папку где модели? Типа BillableTrait.php

Создай папку Traits в каталоге app, и туда ложи все трейты

Не в сети

#19 22.11.2017 11:36:42

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопросы по стилю

Создай папку Traits в каталоге app, и туда ложи все трейты


У меня так и есть. Просто не удобно каждый раз туда лазить за трейтом. Проще вместе с моделями. Подряд открываешь и их и трейты

Не в сети

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