PHP code example of ltd-beget / sphinx-configurator

1. Go to this page and download the library: Download ltd-beget/sphinx-configurator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

ltd-beget / sphinx-configurator example snippets



    use LTDBeget\sphinx\enums\eSection;
    use LTDBeget\sphinx\enums\eVersion;
    use LTDBeget\sphinx\enums\options\eIndexerOption;
    use LTDBeget\sphinx\informer\Informer;
    
    // chose version
    $version = eVersion::V_2_2_10();
    
    // get options help informer
    $informer = Informer::get($version);
    
    // chose section
    $section = eSection::INDEXER();
    
    // check is known option type
    // useful only for version 2.1.9 and lower for section common
    $informer->isSectionExist($section); 
    
    
    // see all options info
    foreach ($informer->iterateOptionInfo($section) as $optionInfo) {
        $optionInfo->getName();
        $optionInfo->getDescription();
        $optionInfo->getDocLink();
        $optionInfo->getVersion();
        $optionInfo->getSection();
        $optionInfo->isIsMultiValue();
    }
    
    // concrete option
    
    $option = eIndexerOption::LEMMATIZER_CACHE();
    // is option exist in current version
    $informer->isKnownOption($section, $option);
    
    // is option permanently removed from newer version of Sphinx
    $informer->isRemovedOption($section, $option);
    
    // see concrete option info
    $optionInfo = $informer->getOptionInfo($section, $option);
    $optionInfo->getName();
    $optionInfo->getDescription();
    $optionInfo->getDocLink();
    $optionInfo->getVersion();
    $optionInfo->getSection();
    $optionInfo->isIsMultiValue();


use LTDBeget\sphinx\configurator\Configuration;
    use LTDBeget\sphinx\enums\eVersion;
    use LTDBeget\sphinx\enums\options\eIndexOption;
    use LTDBeget\sphinx\enums\options\eSearchdOption;
    use LTDBeget\sphinx\enums\options\eSourceOption;
    
    // chose version
    $version = eVersion::V_2_2_10();
    
    // get content of your configuration file
    $path_to_configuration = __DIR__. '/sphinx/conf/valid.example.conf';
    $content = file_get_contents($path_to_configuration);
    
    
    // create object from string
    // if your configuration is valid it will be deserialized into the object
    // note that if your configuration has options which 
    // was permanently removed from newer versions of sphinx
    // they will be ignored
    $configuration = Configuration::fromString($content, $version);
    
    // if you want, you can store the configuration in different formats
    $as_array = $configuration->toArray();
    $as_json  = $configuration->toJson();
    
    // if you need to make sphinx conf file content cast object to string
    $as_plain = (string) $configuration;
    
    // configuration object serialized as array or json can be deserialized
    $configuration = Configuration::fromArray($as_array, $version);
    $configuration = Configuration::fromJson($as_json, $version);
    
    // or you can create empty object and fill it yourself
    $configuration = new Configuration($version);
    
    // adding source sections
    $source = $configuration->addSource('source1');
    $source->addOption(eSourceOption::TYPE(), 'mysql');
    
    $source = $configuration->addSource('source2', 'source1');
    $source->addOption(eSourceOption::TYPE(), 'pgsql');
    
    // is section has inheritance
    $source->isHasInheritance();
    
    // get parent section object
    $source->getInheritance();
    
    // note that sphinx has multi value options (MVA)
    // if you add twice or more times MVA option each time new option wil added
    $source->addOption(eSourceOption::XMLPIPE_ATTR_MULTI_64(), '1234567890');
    $source->addOption(eSourceOption::XMLPIPE_ATTR_MULTI_64(), '0987654321');
    
    // but if you add not MVA option twice, newer option erases older
    $source->addOption(eSourceOption::CSVPIPE_DELIMITER(), '|'); // will be erased
    $source->addOption(eSourceOption::CSVPIPE_DELIMITER(), '.'); // this is set in configuration
    
    // adding index sections
    $source = $configuration->addIndex('index1');
    $source->addOption(eIndexOption::SOURCE(), 'source1');
    
    $source = $configuration->addIndex('index2', 'index1');
    $source->addOption(eIndexOption::SOURCE(), 'source2');
    
    // check is has settings sections
    $configuration->isHasCommon();
    $configuration->isHasSearchd();
    $configuration->isHasIndexer();
    
    // get settings section (it will be created if doesn't exists)
    $searchd = $configuration->getSearchd();
    
    // add option to settings
    $searchd->addOption(eSearchdOption::LISTEN(), '9312');
    
    // for indexer and common work is same
    $indexer = $configuration->getIndexer();
    $common  = $configuration->getCommon();
    
    // each section can be deleted.
    // note, if you delete section that is parent to some one, its child will be removed too.
    $common->delete();
    
    
    // iterating and manipulation with options
    
    // index and source is multiple sections
    // for iterating via it use iterateSource() or iterateIndex()
    foreach($configuration->iterateSource() as $section) {
        foreach ($section->iterateOptions() as $option) {
            $option->getInfo();
            $option->getName();
            $option->getValue();
    
            if($option->getValue() === 'pgsql' && $option->getName()->is(eSourceOption::TYPE())) {
                $option->delete();
            }
    
            if($option->getValue() === 'mysql' && $option->getName()->is(eSourceOption::TYPE())) {
                $option->setValue('pgsql');
            }
        }
    }
    
    // searchd, indexer and common is single section
    // so iterate via options like this
    foreach($configuration->getIndexer()->iterateOptions() as $option) {
        $option->getInfo();
        $option->getName();
        $option->getValue();
    }
    
    // and now, cast to string and see your brilliant configuration ;)
    echo $configuration;
shell
$ php phpunit.phar --coverage-html coverage