更简单的方法来包含代码片段

I'm using Wolf CMS, but I want to make it easier to include snippets.

At the moment one has to write this to include a snippet:

<?php $this->includeSnippet('scripts'); ?>

In here 'scripts' is the name of the snippet.

What I'd like to do is write a little piece of code that interprets this:

###scripts### as <?php $this->includeSnippet('scripts'); ?>

Cause the line of code is always the same, only the snippet name changes.

Would that be possible or am I asking the impossible here?

Thanks in advance

You could define a function for this:

function includeSnippetsFromList($snippets) {
    foreach ($snippets as $snippet) {
        $this->includeSnippet($snippet);
    }
}

... and then call it like this:

$snippets = "snippet1,snippet2,scripts,specialSnippet,layoutSnippet";
// turn string to array of snippets and call function to include them:
includeSnippetsFromList(explode(",", $snippets));

The way you separate the snippets can of course be different.

If you want to have them embedded in a long text and wrapped like ###scripts###, then you could use preg_match_all to extract them:

function includeSnippetsFromText($text) {
    preg_match_all("/###(.*?)###/", $text, $matches);

    foreach ($matches[1] as $snippet) {
        $this->includeSnippet($snippet);
    }
}

Use it like this:

$text = 
"This is a text
that has snippets, like
###snippet1###
###snippet2###
###scripts###
but also these:
###specialSnippet###
###layoutSnippet###
This is the end of this text.";

includeSnippetsFromText($text);