Laravel reusable functions
up vote
0
down vote
favorite
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?
- Helpers
But I don't think this is a good idea since it am dealing with database.
- 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.
- 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
|
show 1 more comment
up vote
0
down vote
favorite
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?
- Helpers
But I don't think this is a good idea since it am dealing with database.
- 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.
- 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
what about traits ?
– Anar Bayramov
Nov 20 at 1:50
@AnarBayramov So I will have to create a class for this single function?
– Ahmed essam
Nov 20 at 1:53
1
why cant you have a class for single function ?
– Anar Bayramov
Nov 20 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 anduse
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 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 at 11:43
|
show 1 more comment
up vote
0
down vote
favorite
up vote
0
down vote
favorite
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?
- Helpers
But I don't think this is a good idea since it am dealing with database.
- 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.
- 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
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?
- Helpers
But I don't think this is a good idea since it am dealing with database.
- 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.
- 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
php laravel repository-pattern
edited Nov 24 at 18:03
tereško
52.2k1976135
52.2k1976135
asked Nov 20 at 1:44
Ahmed essam
315
315
what about traits ?
– Anar Bayramov
Nov 20 at 1:50
@AnarBayramov So I will have to create a class for this single function?
– Ahmed essam
Nov 20 at 1:53
1
why cant you have a class for single function ?
– Anar Bayramov
Nov 20 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 anduse
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 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 at 11:43
|
show 1 more comment
what about traits ?
– Anar Bayramov
Nov 20 at 1:50
@AnarBayramov So I will have to create a class for this single function?
– Ahmed essam
Nov 20 at 1:53
1
why cant you have a class for single function ?
– Anar Bayramov
Nov 20 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 anduse
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 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 at 11:43
what about traits ?
– Anar Bayramov
Nov 20 at 1:50
what about traits ?
– Anar Bayramov
Nov 20 at 1:50
@AnarBayramov So I will have to create a class for this single function?
– Ahmed essam
Nov 20 at 1:53
@AnarBayramov So I will have to create a class for this single function?
– Ahmed essam
Nov 20 at 1:53
1
1
why cant you have a class for single function ?
– Anar Bayramov
Nov 20 at 1:55
why cant you have a class for single function ?
– Anar Bayramov
Nov 20 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 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 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 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 at 11:43
|
show 1 more comment
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
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
add a comment |
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',
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
up vote
1
down vote
accepted
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
add a comment |
up vote
1
down vote
accepted
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
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
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
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
answered Nov 21 at 2:07
Anar Bayramov
4,22442542
4,22442542
add a comment |
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
what about traits ?
– Anar Bayramov
Nov 20 at 1:50
@AnarBayramov So I will have to create a class for this single function?
– Ahmed essam
Nov 20 at 1:53
1
why cant you have a class for single function ?
– Anar Bayramov
Nov 20 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 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 at 11:43