user1464139
user1464139

Reputation:

How does a php program decide what function is called first when I go to a php page?

I am trying to understand how a php application that is called with a POST to this URL works:

transliterator/romaji

The romaji.php looks like this:

<?php
namespace JpnForPhp\Transliterator;
class Romaji extends TransliterationSystem
{
    private $latinCharacters = array();
    public function __construct($system = '')
    {
        $file = __DIR__ . DIRECTORY_SEPARATOR . 'Romaji' . DIRECTORY_SEPARATOR . (($system) ? $system : 'hepburn') . '.yaml';
        parent::__construct($file);
    }
    public function __toString()
    {
        return $this->configuration['name']['english'] . ' (' . $this->configuration['name']['japanese'] . ')';
    }

TransliterationSystem looks like this:

<?php

namespace JpnForPhp\Transliterator;
use Symfony\Component\Yaml\Yaml;
abstract class TransliterationSystem
{
    public $configuration = array();
    public function __construct($file)
    {
        $this->configuration = Yaml::parse(file_get_contents($file));
    }
    public function transliterate($str)
    {
        $str = $this->preTransliterate($str);
        foreach ($this->configuration['workflow'] as $work) {
            if (!method_exists($this, $work['function'])) {
                continue;
            }
            $params = array($str);
            if (isset($work['parameters'])) {
                $params[] = $work['parameters'];
            }
            $str = call_user_func_array(array($this, $work['function']), $params);
        }
        $str = $this->postTransliterate($str);
        return $str;
    }

Can someone explain to me the sequence of events for when I POST to romaji.php? Below is a link to the github if there is something that I should have included but didn't.

For reference here's the link to github

Upvotes: 2

Views: 65

Answers (2)

Matthieu Bilbille
Matthieu Bilbille

Reputation: 161

I'm the one who wrote this library :) JpnForPhp exposes various helper and functions, that's why you don't see any instanciation like = new Romaji() ; the transliterator component doesn't call himself :)

If you want to see some sample to understand how to use it, please check the test files or the demo website source code

Hope this help.

Upvotes: 0

Ray O&#39;Donnell
Ray O&#39;Donnell

Reputation: 781

Normally a PHP file is read (and evaluated) from top to bottom. As pointed out in a comment above, these are just class declarations - there's no code there to actually instantiate the classes or do anything with them, so there's really nothing happening here as such.

For something to happen, there would need to be some code to make use of these classes, for example:

$r = new Romaji();
// Do something with $r ....

EDIT:

I just had a look at the GitHub link, and apparently this is a library; so you'll call it from your own code - it won't do anything by itself.

Upvotes: 3

Related Questions