Pragmatism in the real world

Sublime Text 2 Snippet for PHP getter and setter generation

Update: This article has been superseded by Improved Sublime Text 2 PHP getter and setter generation

I’ve been playing with Sublime Text 2 recently and have quite enjoyed how quiet my ageing laptop is when the fans aren’t running due to a Java-based IDE.

As with a lot of editors, Sublime Text supports snippets which are essentially text expansions of a short phrase into more text. I needed to create a few getXxx() and setXxx() methods for some properties of a class and decided that the easiest way to do this would be with a snippet.

To create a snippet, go to Tools->New Snippet… and replace the code example provided with this:

<snippet>
    <content><![CDATA[public function get${1/(.*)/\u$1/}()
{
    return \$this->${1:$SELECTION};
}

public function set${1/(.*)/\u$1/}(\$$1)
{
    \$this->$1 = \$$1;
    return \$this;
}
]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>getset</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
    <scope>source.php</scope>
    <!-- Optional: Description to show in the menu -->
    <description>Create getter and setter methods</description>
</snippet>

Save the file as getset.sublime-snippet and you’re done.

To use, simply type getset followed by tab (in the latest dev builds, at least) and it will automatically expand. Alternatively, select some text and use shift+cmd+p -> getset to automatically replace the selected text with the get and set methods completed for the text that was selected.

10 thoughts on “Sublime Text 2 Snippet for PHP getter and setter generation

  1. hmmm… after diving a bit more into sublime 2 i could reproduce some of the missing features with packages and snippets.

    what i realy missing is a "goto reference" or "goto class" feature.

  2. I have a problem. I saved file how it si shown there, but it doesn't work…

    What can be the problem??

  3. This is really cool. I have a particular use case where I'm using Doctrine 2 and it helps for all my member variables to be named with underscores like foo_bar but I want camel case getters and setters like getFooBar() and setFooBar(). Tweaked your snippet a bit and it seems to work great:

    ${1/([a-z]+)([A-Z][a-z]+)/1_l2/g$1};
    }

    public function set${1/(.*)/u$1/}($$1)
    {
    $this->${1/([a-z]+)([A-Z][a-z]+)/1_l2/g$1} = $${1:$SELECTION};
    return $this;
    }
    ]]>

    getset

    source.php

    Create getter and setter methods

    Thanks for giving me most of what I needed :-)

Comments are closed.