Politics, Sociology, Firefighting, Technology, and Original Fiction

Category: PHP

Events, Listeners, Queues, and Jobs in Laravel Explained Simply

Someone on StackOverflow recently asked for a very basic explanation of what the differences are between Events, Listeners, Queues, and Jobs in Laravel. Specifically, the poster requested that the answer be explained as if he or she was only 5. As Events, Listeners, Queues, and Jobs can be confusing, I thought it might be worth posting my response, in the hopes that it might be useful to anyone who might be wondering the same thing.

Read More

New EventServiceProvider Location For Lumen 5.2

This is as much a note to myself as anything, but if you have recently tried to update a project that was using Lumen 5.1 to use Lumen 5.2, you might get an error that Illuminate\Foundation\Support\Providers\EventServiceProvider can no longer be found.

The problem is explicit in the error, thankfully: the class can no longer be found. The question then is, where has that file gone?

Read More

Unique Pivot Rows With Laravel’s Eloquent

This post is something I find myself needing a lot, so I thought I would put it here for my own memory and anyone else who might need it. To give credit where credit is due, the methodology shown below is taken from the answers here: https://laracasts.com/discuss/channels/requests/many-to-many-relation-with-unique-records-in-pivot?page=1

Often times, when I set up a many-to-many relationship in Laravel, I need the relationship between two nodes to be distinct. For example, when a user is given a privilege for a forum, and they can have one-and-only-one privilege type for that particular forum, even if they are related to many other forums, then we will not want duplicate pivot rows. In this case, it would get awful tedious to ensure that every time there is an update for the user’s privilege that we check to see if a relationship already exists between the user and forum and update it instead of creating it. That can be thrown into a model method easily enough for DRY’er code, but it is still mildly annoying, and if you’re working with a team there’s no ultimate failsafe error should someone circumvent that procedure, by accident or otherwise.

So the goal of this post is:

  1. to ensure that in a many-to-many relationship there can be only one row relating two nodes (many users are tied to many forums, but a particular user and a particular forum are related through no more than one row);
  2. to use built-in Eloquent methodology to perform the if-new-create-otherwise-update logic for us; and
  3. to ensure that the systems used will throw an error should an attempt be made to create a duplicate relationship.

Read More

Simple PHP Getter/Setter Snippet For Sublime Text

The following snippet is what I use in PHP when I am building out a class and need to quickly and easily flesh out the getters and setters for my protected and private variables:

To use this snippet yourself, throw it in a text file named getter-setter.sublime-snippet and put it in the folder where your user preferences are stored. For reference, on OSX the default location should be ~/Library/Application Support/Sublime Text 3/Packages/User/.

Read More

Should We Allow DocBlocks To Function As Code?

I love DocBlocks. When I meet developers who do not, or who dislike writing them, I get profoundly sad. Same thing when it comes to comments in code. I was once told that I write too many comments, and that I should not need them since my peers could read code just fine anyway. Sure, I said, and I can read Spanish just fine as well, but I would do a lot better if you threw in some English comments here and there.

Read More

Get Fully Qualified Class Name From File Contents In PHP

Ever needed to get the name of a class from a file without actually loading that file in PHP? Probably not – I’ll admit it’s kind of a super edgy edge case. Nonetheless, it’s an interesting problem, and I ran into it working on some migration scripts for a project. So, for the sake of my own memory, I thought I would put together this quick little write-up. Hopefully it helps someone else out as well.

Read More

Gitlab CI PHPUnit Test Coverage Parsing

Test Coverage Parsing

If you use Gitlab CI (and I suggest you do if you are using Gitlab already), you may have noticed in the settings that there is an item titled “Test coverage parsing”.

It looks a little something like this:Screen Shot 2015-04-12 at 10.09.51 PM

This feature allows you to give Gitlab CI a regex that will parse the output of your test runner and grab what percentage of your code is covered by your unit tests. The resulting percentage will then display for each individual build in your list of builds.

I know for me, having this displayed in my face helps add that extra bit of incentive to write some more tests.

Read More

Powered by WordPress & Theme by Anders Norén