1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Console\Helper;
13
14/**
15 * Helper is the base class for all helper classes.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19abstract class Helper implements HelperInterface
20{
21    protected $helperSet = null;
22
23    /**
24     * Sets the helper set associated with this helper.
25     *
26     * @param HelperSet $helperSet A HelperSet instance
27     */
28    public function setHelperSet(HelperSet $helperSet = null)
29    {
30        $this->helperSet = $helperSet;
31    }
32
33    /**
34     * Gets the helper set associated with this helper.
35     *
36     * @return HelperSet A HelperSet instance
37     */
38    public function getHelperSet()
39    {
40        return $this->helperSet;
41    }
42
43    /**
44     * Returns the length of a string, using mb_strlen if it is available.
45     *
46     * @param string $string The string to check its length
47     *
48     * @return int     The length of the string
49     */
50    protected function strlen($string)
51    {
52        if (!function_exists('mb_strlen')) {
53            return strlen($string);
54        }
55
56        if (false === $encoding = mb_detect_encoding($string)) {
57            return strlen($string);
58        }
59
60        return mb_strlen($string, $encoding);
61    }
62}
63