Impossible to call wordpress function inside an include?

I’ve had this problem in past

try using include with locate_template:
I don’t exactly remember the reason but this code still works:

Example:
include(locate_template(YOUR_TEMPLATE_PATH));

Here’s a complete demonstration too, using the same idea, if you need more help.

For Admin Panel

include simply works in admin panel.

You might want to modify your code like:

public function init(){
    add_menu_page( 'Your Plugin Name' , 'Your Plugin Settings' , 'manage_options' , 'your_plugin_settings' ,  array( $this, 'settings_page' ) );
}
public function html_page_template(){
    ob_start();
    include('views/view-settings.php');
    $html = ob_get_clean();
    echo $html;
}

If the init function is calling your custom hook, then please don’t modify it and make sure that code is working properly. Your html_page_template function should now output the form.