0.3.1 • Published 6 years ago

phazor v0.3.1

Weekly downloads
1
License
ISC
Repository
github
Last release
6 years ago

Phazor

A quicker PHP syntax similar to Razor Web Pages.

<head>
    ${
        $title = "I love fruit";
        $isFruit = true;
    }
    <title>$(ucwords($title))</title>
</head>
<body>
    <h1>$title.</h1>
    $if ($isFruit) {
        <p>It sure is great!</p>
    }
</body>

Install Phazor with NPM npm i phazor -g.

Run the compiler "phazor sourceFolder destinationFolder" from the parent directory.

Links

NPM Package

Visual Studio Code Extension

Github Repository

Overview

Add PHP code using the $ symbol.

Code Blocks - ${ -php- }

${ $message = "I like fruit."; }

Compiles to:

<?php $message = "I like fruit."; ?>

Inline Expressions - $variable

<p>$message</p>

Compiles to:

<p><?php echo $message; ?></p>

For complex expressions use parenthesis - $().

<p>$($cost * 2)</p>

Compiles to:

<p><?php echo $cost * 2; ?></p>

Statements - $statement ( -parameters- ) { -php- }

$if ($condition == true) {
    <p>$message</p>
}

Compiles to:

<?php if ($condition == true) { ?>
    <p><?php echo $message; ?></p>
<?php } ?>

Comments - /* -comment- */

Comments work the same as multiline php comments.

${
    /* Set the price */
    $cost = "$1.99";
}
<h1>Buy Fruit</h1>
/* How much the fruit will cost */
<p>That fruit will cost you $cost each.</p>

Escape Entity - $$

Escape "$" in HTML.

<p>That fruit will cost you $$1.99 each.</p>

Compiles to:

<p>That fruit will cost you $1.99 each.</p>

Basic Example

Install Phazor with NPM npm i phazor -g.

Create a folder.

Create a .ph file inside the folder:

<!DOCTYPE html>
<html>
<head>
    ${
        $title = 'Fruit for Sale';
        $fruits = array('strawberries' => 'red',
            'oranges' => 'orange',
            'pineapples' => 'yellow',
            'kiwis' => 'green',
            'blueberries' => 'blue',
            'grapes' => 'purple');
    }
    <title>$title.</title>
    <link rel="stylesheet" type="text/css" href="main.css" />
    <script src="main.js"></script>
</head>
<body>
    <div id="page">
        <h1>$title</h1>
        <ul>
            $foreach ($fruits as $fruit => $color) {
                <li style="color: $color;">
                    $(ucwords($fruit))
                    $if ($color == "green") {
                        <strong>- Meh.</strong>
                    } else if($color == "orange") {
                        <strong>- Yum!</strong>
                    }
                </li>
            }
        </ul>
        <p>All these fruits together will cost $$100.</p>
    </div>
</body>
</html>

Run the compiler "phazor sourceFolder destinationFolder" from the parent directory.

Phazor outputs the following .php file into the destination folder:

<!DOCTYPE html>
<html>
<head>
    <?php 
        $title = 'Fruit for Sale';
        $fruits = array('strawberries' => 'red',
            'oranges' => 'orange',
            'pineapples' => 'yellow',
            'kiwis' => 'green',
            'blueberries' => 'blue',
            'grapes' => 'purple');
    ?>
    <title><?php echo $title; ?>.</title>
    <link rel="stylesheet" type="text/css" href="main.css" />
    <script src="main.js"></script>
</head>
<body>
    <div id="page">
        <h1><?php echo $title; ?></h1>
        <ul>
            <?php foreach ($fruits as $fruit => $color) { ?>
                <li style="color: <?php echo $color; ?>;">
                    <?php echo ucwords($fruit); ?>
                    <?php if ($color == "green") { ?>
                        <strong>- Meh.</strong>
                    <?php } else if($color == "orange") { ?>
                        <strong>- Yum!</strong>
                    <?php } ?>
                </li>
            <?php } ?>
        </ul>
        <p>All these fruits together will cost $100.</p>
    </div>
</body>
</html>

Which renders in the browser:

Fruit for Sale

  • Strawberries
  • Oranges - Yum!
  • Pineapples
  • Kiwis - Meh.
  • Blueberries
  • Grapes

All these fruits together will cost $100.