Laravel reusable functions












0















I am using Repository design pattern and I have a function generateBarcode() this function just do some logic and insert data in database.



I am calling this function in more one function and more that one repository to generate a new Barcode.




Question is:




What is the best way to make this function reusable?




  1. Helpers


But I don't think this is a good idea since it am dealing with database.




  1. Events


Firing event and storing the result.
$barcode = event(new NewBarcodeRequired())



That what I am doing right now and data is returned as an array



Also I don't think that is a good idea because I have read that events shouldn't return data.




  1. Repository


Create a new repository for this function but I think it is a very bad idea because I won't create a class for every reusable function that I have.










share|improve this question

























  • what about traits ?

    – Anar Bayramov
    Nov 20 '18 at 1:50











  • @AnarBayramov So I will have to create a class for this single function?

    – Ahmed essam
    Nov 20 '18 at 1:53






  • 1





    why cant you have a class for single function ?

    – Anar Bayramov
    Nov 20 '18 at 1:55











  • A trait seems like a good option if the code in each repository is similar. That way you can define the function once and use it in all the repositories where you need to generate barcodes. It doesn't matter if there is only one function in the trait.

    – newUserName02
    Nov 20 '18 at 2:33













  • @newUserName02 why shouldn't i use event in this case? I could simple create a new product and fire and event to generate the code then store that event result in a variable and assign it to the created product

    – Ahmed essam
    Nov 20 '18 at 11:43
















0















I am using Repository design pattern and I have a function generateBarcode() this function just do some logic and insert data in database.



I am calling this function in more one function and more that one repository to generate a new Barcode.




Question is:




What is the best way to make this function reusable?




  1. Helpers


But I don't think this is a good idea since it am dealing with database.




  1. Events


Firing event and storing the result.
$barcode = event(new NewBarcodeRequired())



That what I am doing right now and data is returned as an array



Also I don't think that is a good idea because I have read that events shouldn't return data.




  1. Repository


Create a new repository for this function but I think it is a very bad idea because I won't create a class for every reusable function that I have.










share|improve this question

























  • what about traits ?

    – Anar Bayramov
    Nov 20 '18 at 1:50











  • @AnarBayramov So I will have to create a class for this single function?

    – Ahmed essam
    Nov 20 '18 at 1:53






  • 1





    why cant you have a class for single function ?

    – Anar Bayramov
    Nov 20 '18 at 1:55











  • A trait seems like a good option if the code in each repository is similar. That way you can define the function once and use it in all the repositories where you need to generate barcodes. It doesn't matter if there is only one function in the trait.

    – newUserName02
    Nov 20 '18 at 2:33













  • @newUserName02 why shouldn't i use event in this case? I could simple create a new product and fire and event to generate the code then store that event result in a variable and assign it to the created product

    – Ahmed essam
    Nov 20 '18 at 11:43














0












0








0








I am using Repository design pattern and I have a function generateBarcode() this function just do some logic and insert data in database.



I am calling this function in more one function and more that one repository to generate a new Barcode.




Question is:




What is the best way to make this function reusable?




  1. Helpers


But I don't think this is a good idea since it am dealing with database.




  1. Events


Firing event and storing the result.
$barcode = event(new NewBarcodeRequired())



That what I am doing right now and data is returned as an array



Also I don't think that is a good idea because I have read that events shouldn't return data.




  1. Repository


Create a new repository for this function but I think it is a very bad idea because I won't create a class for every reusable function that I have.










share|improve this question
















I am using Repository design pattern and I have a function generateBarcode() this function just do some logic and insert data in database.



I am calling this function in more one function and more that one repository to generate a new Barcode.




Question is:




What is the best way to make this function reusable?




  1. Helpers


But I don't think this is a good idea since it am dealing with database.




  1. Events


Firing event and storing the result.
$barcode = event(new NewBarcodeRequired())



That what I am doing right now and data is returned as an array



Also I don't think that is a good idea because I have read that events shouldn't return data.




  1. Repository


Create a new repository for this function but I think it is a very bad idea because I won't create a class for every reusable function that I have.







php laravel repository-pattern






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 24 '18 at 18:03









tereško

52.5k2078136




52.5k2078136










asked Nov 20 '18 at 1:44









Ahmed essamAhmed essam

335




335













  • what about traits ?

    – Anar Bayramov
    Nov 20 '18 at 1:50











  • @AnarBayramov So I will have to create a class for this single function?

    – Ahmed essam
    Nov 20 '18 at 1:53






  • 1





    why cant you have a class for single function ?

    – Anar Bayramov
    Nov 20 '18 at 1:55











  • A trait seems like a good option if the code in each repository is similar. That way you can define the function once and use it in all the repositories where you need to generate barcodes. It doesn't matter if there is only one function in the trait.

    – newUserName02
    Nov 20 '18 at 2:33













  • @newUserName02 why shouldn't i use event in this case? I could simple create a new product and fire and event to generate the code then store that event result in a variable and assign it to the created product

    – Ahmed essam
    Nov 20 '18 at 11:43



















  • what about traits ?

    – Anar Bayramov
    Nov 20 '18 at 1:50











  • @AnarBayramov So I will have to create a class for this single function?

    – Ahmed essam
    Nov 20 '18 at 1:53






  • 1





    why cant you have a class for single function ?

    – Anar Bayramov
    Nov 20 '18 at 1:55











  • A trait seems like a good option if the code in each repository is similar. That way you can define the function once and use it in all the repositories where you need to generate barcodes. It doesn't matter if there is only one function in the trait.

    – newUserName02
    Nov 20 '18 at 2:33













  • @newUserName02 why shouldn't i use event in this case? I could simple create a new product and fire and event to generate the code then store that event result in a variable and assign it to the created product

    – Ahmed essam
    Nov 20 '18 at 11:43

















what about traits ?

– Anar Bayramov
Nov 20 '18 at 1:50





what about traits ?

– Anar Bayramov
Nov 20 '18 at 1:50













@AnarBayramov So I will have to create a class for this single function?

– Ahmed essam
Nov 20 '18 at 1:53





@AnarBayramov So I will have to create a class for this single function?

– Ahmed essam
Nov 20 '18 at 1:53




1




1





why cant you have a class for single function ?

– Anar Bayramov
Nov 20 '18 at 1:55





why cant you have a class for single function ?

– Anar Bayramov
Nov 20 '18 at 1:55













A trait seems like a good option if the code in each repository is similar. That way you can define the function once and use it in all the repositories where you need to generate barcodes. It doesn't matter if there is only one function in the trait.

– newUserName02
Nov 20 '18 at 2:33







A trait seems like a good option if the code in each repository is similar. That way you can define the function once and use it in all the repositories where you need to generate barcodes. It doesn't matter if there is only one function in the trait.

– newUserName02
Nov 20 '18 at 2:33















@newUserName02 why shouldn't i use event in this case? I could simple create a new product and fire and event to generate the code then store that event result in a variable and assign it to the created product

– Ahmed essam
Nov 20 '18 at 11:43





@newUserName02 why shouldn't i use event in this case? I could simple create a new product and fire and event to generate the code then store that event result in a variable and assign it to the created product

– Ahmed essam
Nov 20 '18 at 11:43












1 Answer
1






active

oldest

votes


















1














Traits could be a good option for this case. Which will give you flexibility to use in any of your class without requirement of class extension.




Traits are a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. The semantics of the combination of Traits and classes is defined in a way which reduces complexity, and avoids the typical problems associated with multiple inheritance and Mixins.



A Trait is similar to a class, but only intended to group
functionality in a fine-grained and consistent way. It is not possible
to instantiate a Trait on its own. It is an addition to traditional
inheritance and enables horizontal composition of behavior; that is,
the application of class members without requiring inheritance.




http://php.net/manual/en/language.oop5.traits.php






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53385078%2flaravel-reusable-functions%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    Traits could be a good option for this case. Which will give you flexibility to use in any of your class without requirement of class extension.




    Traits are a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. The semantics of the combination of Traits and classes is defined in a way which reduces complexity, and avoids the typical problems associated with multiple inheritance and Mixins.



    A Trait is similar to a class, but only intended to group
    functionality in a fine-grained and consistent way. It is not possible
    to instantiate a Trait on its own. It is an addition to traditional
    inheritance and enables horizontal composition of behavior; that is,
    the application of class members without requiring inheritance.




    http://php.net/manual/en/language.oop5.traits.php






    share|improve this answer




























      1














      Traits could be a good option for this case. Which will give you flexibility to use in any of your class without requirement of class extension.




      Traits are a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. The semantics of the combination of Traits and classes is defined in a way which reduces complexity, and avoids the typical problems associated with multiple inheritance and Mixins.



      A Trait is similar to a class, but only intended to group
      functionality in a fine-grained and consistent way. It is not possible
      to instantiate a Trait on its own. It is an addition to traditional
      inheritance and enables horizontal composition of behavior; that is,
      the application of class members without requiring inheritance.




      http://php.net/manual/en/language.oop5.traits.php






      share|improve this answer


























        1












        1








        1







        Traits could be a good option for this case. Which will give you flexibility to use in any of your class without requirement of class extension.




        Traits are a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. The semantics of the combination of Traits and classes is defined in a way which reduces complexity, and avoids the typical problems associated with multiple inheritance and Mixins.



        A Trait is similar to a class, but only intended to group
        functionality in a fine-grained and consistent way. It is not possible
        to instantiate a Trait on its own. It is an addition to traditional
        inheritance and enables horizontal composition of behavior; that is,
        the application of class members without requiring inheritance.




        http://php.net/manual/en/language.oop5.traits.php






        share|improve this answer













        Traits could be a good option for this case. Which will give you flexibility to use in any of your class without requirement of class extension.




        Traits are a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. The semantics of the combination of Traits and classes is defined in a way which reduces complexity, and avoids the typical problems associated with multiple inheritance and Mixins.



        A Trait is similar to a class, but only intended to group
        functionality in a fine-grained and consistent way. It is not possible
        to instantiate a Trait on its own. It is an addition to traditional
        inheritance and enables horizontal composition of behavior; that is,
        the application of class members without requiring inheritance.




        http://php.net/manual/en/language.oop5.traits.php







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 21 '18 at 2:07









        Anar BayramovAnar Bayramov

        4,48442550




        4,48442550
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53385078%2flaravel-reusable-functions%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Guess what letter conforming each word

            Port of Spain

            Run scheduled task as local user group (not BUILTIN)